我想在我的 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。