Lua的基本信息调试(三)--lua_getstack

本文介绍了如何在Lua中使用lua_getstack和lua_getinfo来精确获取错误堆栈信息,特别是在处理脚本错误时,通过遍历堆栈找到最底层的错误位置,结合源文件、行号和函数名生成详细的错误提示,从而有效定位和解决lua运行时的问题。
摘要由CSDN通过智能技术生成

在前面那篇文章Lua的基本信息调试(二)中,我使用了lua_getstack(L, 2, &debug);去取堆栈中的错误信息,但至于错误信息在stack中的层数并不清楚,经过信息打印发现,错误信息在stack的最深处,因此,修改函数为:

int pcall_callback_err_fun(lua_State* L)
{
    lua_Debug debug;

   

    //取得层数

    uint32_t level = 0;
    while (lua_getstack(L, level, &debug)) {
        level++;
    }

    if (!level) {
        return 0;
    }


    lua_getstack(L, level, &debug);
    lua_getinfo(L, "Sln", &debug);

    std::string err = lua_tostring(L, -1);
    lua_pop(L, 1);
    std::stringstream msg;
    msg << debug.short_src << ":line " << debug.currentline;
  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值