如何使用 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。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)