0

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

4

0 回答 0