为调试目的嵌入脚本语言

Embedding scripting language for debugging purposes

本文关键字:脚本 语言 调试      更新时间:2023-10-16

我想在OpenGL c++应用程序中嵌入脚本语言(js, python, perl,甚至php,任何易于使用的语言)。我想这样做是为了能够做这样的事情:

  • 在运行时打印各种c++类成员的值
  • 导致在运行时唤醒gdb的中断
  • 后,我发现一个错误,我想写一个小脚本在线复制它

我很确定这不会很容易。我想问一下这是个好主意还是坏主意,是否值得付出努力。

<标题>例子usecase h1> 我们假设我旋转一条线,直到它碰撞到什么东西,我的碰撞检测有一些SIGSEGV,在碰撞时发生。我打印出所有的角度,找出哪一个是SIGSEGV之前的一个,我写了一个小的python东西,它显示了一些值,这样我就可以找出出了什么问题等。

我想基本上我要做的是避免gdb和嗯…我希望这个程序能有一种用Python来检查的方法。

不是我不喜欢gdb,而是我不喜欢它有限的命令…

UPDATE: GDB现在可以用Python扩展了。这解决了罐装命令序列的许多限制。

我不认为为了调试而嵌入脚本语言是一个好主意。这绝对是可能的,但是对于您希望能够从脚本语言访问的所有内容,您必须提供一些接口,因为至少据我所知,没有办法直接调用c++或从脚本语言读取c++数据结构。如果您不想直接使用gdb,我建议您学习gdb或寻找gdb前端。我用过ddd,发现它很有用。Eclipse CDT的gdb前端也是可用的。使用调试器给你更多的灵活性,因为调试器知道c++和它的数据结构,因此允许你在运行时检查任何东西,而不必手动编写很多支持代码。

首先:您可以很容易地使用GDB打印出所有这些。在GDB中,您可能想要尝试"帮助数据"显示的内容。

您使用哪个IDE ?您可能想要尝试跨平台IDE Code::Blocks,它与GDB的接口相当整齐。

如果你想与另一种语言接口,你可能想看看"Lua"。它很容易学。见http://en.wikipedia.org/wiki/Lua_%28programming_language%29

Lua旨在嵌入到其他应用程序中,因此它提供了一个健壮的、易于使用的C API。该API分为两个部分:Lua核心和Lua辅助库。

我不知道这个主意是好是坏。

但是你可以看看Chaiscript,它很容易用c++编写

Python是一个非常好的应用程序脚本语言选择。这不是一个强有力的论据,但我知道lua在游戏编程中被广泛使用(我不知道为什么),它可能是有用的,因为你正在使用OpenGL。

使用lua -这是一个简单的基于堆栈的解释器。非常干净的API。

。:添加dt_format|dt_convert函数到lua的简单代码