C++ 是否可以向ChaiScript执行添加断点?

C++ 是否可以向ChaiScript执行添加断点?,c++,debugging,chaiscript,C++,Debugging,Chaiscript,是否支持类似调试器的行为?例如,我可以设置执行暂停的断点,并允许我在恢复之前检查堆栈吗?如果是,怎么做?目前无法进入ChaiScript 你有两个选择。您可能会导致出现错误(例如eval('**');),这将导致eval错误异常,并可能生成堆栈错误以表明您是正确的 请参阅此处:了解如何显示堆栈和调用错误信息 另一种选择是使调试器在代码内部中断。可能是这样的:(见:) 函数定义 void debugbreak() { #ifdef _MSC_VER __debugbreak() #else

是否支持类似调试器的行为?例如,我可以设置执行暂停的断点,并允许我在恢复之前检查堆栈吗?如果是,怎么做?

目前无法进入ChaiScript

你有两个选择。您可能会导致出现错误(例如
eval('**');
),这将导致eval错误异常,并可能生成堆栈错误以表明您是正确的

请参阅此处:了解如何显示堆栈和调用错误信息

另一种选择是使调试器在代码内部中断。可能是这样的:(见:)

函数定义

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();
  }
}
//内部chaicript代码
对于(变量i=0;i<1000;++i)
{
如果(i==980){
//应该导致C++调试器中断
debugbreak();
}
}

这一点的问题实际上是理解你所看到的C++堆栈。这需要一些时间来适应,但是AST节点名称应该是相当描述性的。

根据它是什么以及它是如何工作的,我非常怀疑它。除此之外,你为什么不试着阅读文档并亲自了解一下呢?我确实阅读了文档,但指南很短,如果我不知道自己在寻找什么,那么课堂文档也不会有多大帮助,所以我想我应该找一个更有经验的人。嗯,好吧,有点勉强,但好吧。Good luckI认为,向ChaiScript添加易于访问的调试功能对这个很棒的脚本系统非常有益。事实上,可以说,任何没有调试能力的编程工具,无论是脚本还是本机代码,对于大型甚至中型目的来说几乎都是无用的。ChaiScript不应该是不可调试的:)