是否可以在 ChaiScript 执行中添加断点?
Is it possible to add breakpoints to a ChaiScript execution?
ChaiScript 是否支持类似调试器的行为?例如,我能否设置执行暂停的断点,并允许我在恢复之前检查堆栈?如果可以,怎么做?
目前无法破解ChaiScript。
你有两个选择。您可能会导致发生错误(例如 eval('**');
),这会导致 eval 错误异常并可能生成堆栈错误以显示您是。
请参阅此处:https://github.com/ChaiScript/ChaiScript/blob/develop/src/main.cpp#L344 了解如何显示堆栈和调用信息以了解出错情况。
另一种选择是使调试器中断您的代码。它可能是这样的:(参见:Is there a portable equivalent to DebugBreak()/__debugbreak?)
函数定义
void debugbreak()
{
#ifdef _MSC_VER
__debugbreak()
#else
raise(SIGTRAP);
#endif
}
将其添加到 ChaiScript
chai.add(fun(&debugbreak), "debugbreak");
正在触发
//inside chaicript code
for (var i = 0; i < 1000; ++i)
{
if (i == 980) {
// should cause your C++ debugger to break
debugbreak();
}
}
此时的问题实际上是理解您看到的 C++ 堆栈。这需要一些时间来适应,但 AST 节点名称应该具有相当的描述性。
ChaiScript 是否支持类似调试器的行为?例如,我能否设置执行暂停的断点,并允许我在恢复之前检查堆栈?如果可以,怎么做?
目前无法破解ChaiScript。
你有两个选择。您可能会导致发生错误(例如 eval('**');
),这会导致 eval 错误异常并可能生成堆栈错误以显示您是。
请参阅此处:https://github.com/ChaiScript/ChaiScript/blob/develop/src/main.cpp#L344 了解如何显示堆栈和调用信息以了解出错情况。
另一种选择是使调试器中断您的代码。它可能是这样的:(参见:Is there a portable equivalent to DebugBreak()/__debugbreak?)
函数定义
void debugbreak()
{
#ifdef _MSC_VER
__debugbreak()
#else
raise(SIGTRAP);
#endif
}
将其添加到 ChaiScript
chai.add(fun(&debugbreak), "debugbreak");
正在触发
//inside chaicript code
for (var i = 0; i < 1000; ++i)
{
if (i == 980) {
// should cause your C++ debugger to break
debugbreak();
}
}
此时的问题实际上是理解您看到的 C++ 堆栈。这需要一些时间来适应,但 AST 节点名称应该具有相当的描述性。