如何使用C在LuaJIT中发出自定义堆栈帧?

我想在我的C模块中发出额外的堆栈帧,以使跟踪和分析器(我使用jit.profiler)更加详细。

像这样:

char buffer[N];
sprintf(buffer, "%s:%d", __FILE__, __LINE__);
lua_pushexecstackframe(L, buffer);

do_my_module_job();

lua_popexecstackframe(1);

请注意,我谈论的是常规执行堆栈(我们在打印错误时看到的内容),而不是用于Lua-C互操作的"Lua堆栈"

我正在尝试弄清楚LuaJIT本身如何发出Lua代码的帧。 LuaJIT源代码有些复杂,无法对我看到的内容进行安全假设,但是有些建议(例如代码示例或者指针)我已经准备好为该主题使用内部API。

点赞