有没有通用的在c中获取lua崩溃堆栈的方式

TaoismShi 2015-07-03 03:50:06
rt,我查过网上的资料,找到了这么一种方法可以在c中获取到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);


现在我想把他做成通用形式,就是能够自动的把崩溃文件对应的 Lua_State* L找到。请问有没有办法?

另外还有个想法就是说能否通过hook的形式,将所有的lua_pcall替换为lua_xpcall。请问这种方式能实现吗?对性能影响会不会很大?
...全文
445 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
TaoismShi 2015-07-09
  • 打赏
  • 举报
回复
已经解决,是写了一个脚本去记录error,然后把堆栈传到c中。需要使用方用xpcall调用主函数,然后用脚本中的自定义函数去获取error。具体可以参照cocos2d-lua的hello.lua的_G_TRACEBACK__(msg)函数
ForestDB 2015-07-03
  • 打赏
  • 举报
回复
https://github.com/mkottman/lua-gdb-helper

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧