中易网

c++怎么打出lua的错误堆栈

答案:1  悬赏:0  
解决时间 2021-01-12 20:47
  • 提问者网友:做自己de王妃
  • 2021-01-12 03:19
c++怎么打出lua的错误堆栈
最佳答案
  • 二级知识专家网友:一叶十三刺
  • 2021-01-12 04:18
后来在网上搜索了一下,受到一点启发,lua代码在执行的时候可随时调用debug.traceback()方法来获得调用栈的字符串信息,如下图所示:

而c++导出方法给lua调用,是使用tolua++工具实现的,通过ant实现将多个pkg文件生成一个cpp文件。所以只能在ant的build.xml配置中想办法了,好在ant本身就支持正则的任务“ReplaceRegExp”,在调用的方法前面添加打印堆栈的方法即可。

打印lua调用堆栈的方法:
// 打印lua调用栈开始
lua_getglobal(tolua_S, "debug");
lua_getfield(tolua_S, -1, "traceback");
int iError = lua_pcall( tolua_S,//VMachine
0,//Argument Count
1,//Return Value Count
0);
const char* sz = lua_tostring(tolua_S, -1);

CCLog(sz);

Ant脚本build.xml添加一项任务:
match="^\s+self->([^;]+);$" replace='lua_getglobal(tolua_S, "debug");
lua_getfield(tolua_S, -1, "traceback");
int iError = lua_pcall(tolua_S, 0, 1, 0);
const char* sz = lua_tostring(tolua_S, -1);
CCLOG(sz);
self->\1;'
byline="true"
flags="g"/>
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息