3

我正在使用嵌入式 Lua VM 扩展应用程序。我的脚本有时会导致它崩溃,我希望能够从产生的崩溃转储 (Windows) 中获得一些意义。

有没有办法解码 Lua 调用堆栈?我意识到 C 调用堆栈不会与 Lua 非常相似,但它是我正在尝试学习的脚本代码。

我使用 C++ 调试器阅读了 Lua 调用堆栈(2010 年为 Lua 5.1 编写),其中包含许多有用的想法(尽管 Lua VM 的一些细节在 5.1 和 5.3 之间非常不同)。当我连接到正在运行的进程时,我可以使用“使用堆栈转储功能”的想法,但是在调试故障转储时我不知道如何完成类似的事情。Visual Studio 不允许我在立即窗口中执行任何操作或作为 Watch 表达式执行任何操作。我怀疑在验尸情况下采用这种方法并不容易。我错了吗?

我有什么选择?我找不到任何提供我想要的功能的 Visual Studio 扩展。它们似乎适用于调试脚本(在正在运行的进程中)和单步执行代码。有什么已经存在的东西可以帮助我吗?

我唯一能想到的就是在 JavaScript 中重新实现一些 Lua 功能的子集,并从 WinDBG 调用堆栈转储函数。像这个答案(How can I get the lua stack trace from a core file using gdb)可能最接近我想要的答案。当然,有一些现有的代码或项目可以适应我的需要,而无需debug用在调试器中运行的语言实际重新实现 Lua 5.3 的功能。我可以从哪里开始?

4

0 回答 0