c++调用lua时简单打印lua栈

来源:互联网 发布:lol遇到网络问题 编辑:程序博客网 时间:2024/06/06 13:24
今天出现了一个看似奇怪的bug,关于dispatch和listener的,有个listener的函数被无端调用,分析代码,应该只有点击按钮才会被调用,但现在是一启动游戏就会被调用,而且pc上正常,iphone手机上会出问题。我们采用打印lua堆栈的方式,打印堆栈代码如下:print( debug.traceback() )。分析堆栈发现是dispatch了一个未定义的字符串,把字符串正常定义就好了。

2.lua暂停程序执行(相当于C++ System("pause")
os.execute("pause")


  1. void ULuaEngine::PrintLuaStack()  
  2. {  
  3.     lua_State* pLuaState = m_pLuaState;  
  4.   
  5.     int stackTop=lua_gettop(pLuaState);//获取栈顶的索引值  
  6.     int nIdx = 0;  
  7.     int nType;  
  8.   
  9.     //printf(" element count: %d\n", stackTop);  
  10.   
  11.     printf("--栈顶(v)(%d)--\n", stackTop);  
  12.   
  13.     //显示栈中的元素  
  14.     for(nIdx = stackTop;nIdx > 0;--nIdx)  
  15.     {  
  16.         nType = lua_type(pLuaState, nIdx);  
  17.         printf("(i:%d) %s(%s)\n",nIdx, lua_typename(pLuaState,nType), lua_tostring(pLuaState,nIdx));  
  18.     }  
  19.   
  20.     printf("--栈底--\n");  


原创粉丝点击