如何使用Lua钩子找出当前运行的函数的名称?

时间:2011-01-18 07:34:34

标签: c lua debugging

我目前正在运行一个带有LUA_MASKCALL附加钩子的Lua脚本,钩子函数实现如下:

void LuaHook(lua_State *L, lua_Debug *ar) {
    switch(ar->event) {
        case LUA_HOOKCALL:
            lua_getinfo(L, ">n", ar);
            //breakpoint here...
        } break;
        default: 
            break;
    }
}

我想获得被调用函数的名称,但我不确定我是否正确执行它,因为它似乎永远不会给我任何东西(断点在适当的时候被击中)。被调用的函数是绑定的C函数,它们具有名称,因此看起来很奇怪。整体lua_getinfo对我来说是一个完全的谜,文档也不会清楚,所以任何帮助都会在这一点上受到高度赞赏。

1 个答案:

答案 0 :(得分:3)

lua_getstack做了这个伎俩,所以没关系