今天出现了一个看似奇怪的bug,关于dispatch和listener的,有个listener的函数被无端调用,分析代码,应该只有点击按钮才会被调用,但现在是一启动游戏就会被调用,而且pc上正常,iphone手机上会出问题。我们采用打印lua堆栈的方式,打印堆栈代码如下:
print( debug.traceback() )。分析堆栈发现是dispatch了一个未定义的字符串,把字符串正常定义就好了。
2.lua暂停程序执行(相当于C++ System("pause")
os.execute("pause")
- void ULuaEngine::PrintLuaStack()
- {
- lua_State* pLuaState = m_pLuaState;
- int stackTop=lua_gettop(pLuaState);//获取栈顶的索引值
- int nIdx = 0;
- int nType;
- //printf(" element count: %d\n", stackTop);
- printf("--栈顶(v)(%d)--\n", stackTop);
- //显示栈中的元素
- for(nIdx = stackTop;nIdx > 0;--nIdx)
- {
- nType = lua_type(pLuaState, nIdx);
- printf("(i:%d) %s(%s)\n",nIdx, lua_typename(pLuaState,nType), lua_tostring(pLuaState,nIdx));
- }
- printf("--栈底--\n");
- }