c++ - 是否可以在 ChaiScript 执行中添加断点?

标签 c++ debugging chaiscript

是否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 节点名称应该具有相当的描述性。

关于c++ - 是否可以在 ChaiScript 执行中添加断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28015975/

相关文章:

c++ - 将 C++ 对象传递给 ChaiScript 函数

c++ - 当我输入 Ctrl+Z 来完成下面的循环时,我在变量 z 中得到了空字符串。为什么?

c++ - AIX 上 proftpd 的静态编译

c++ - 没有窗口的 Windows 应用程序中的窗口消息

javascript - 创建 react 应用程序在代码重新加载时偶尔会随机崩溃

chaiscript - 在 chaiscript 文件中评估 chaiscript 文件

c++ - 如何从cpprestsdk解析json数据

c++ - 在结构 vector 的监 window 口中显示特定变量

debugging - 你如何调试PDF文件?

c++ - ChaiScript 如何处理大对象?