我想在OpenGL C ++应用程序中嵌入脚本语言(js,python,perl,甚至php,易于使用的任何东西)。我想这样做是为了能够做到这样的事情:
我很确定这并不容易。我想问一下这是一个好/坏的想法,是否值得努力。
让我们假设我旋转一条直到碰撞出来的东西,我的碰撞检测有一些碰撞后发生的SIGSEGV。我打印出所有的角度,找出哪一个是SIGSEGV之前的那个,我写了一个小的python thingie,它显示了一些值,所以我可以弄清楚出了什么问题等。
我猜基本上我要做的就是避免使用gdb和uhm ..我想如果该程序有办法在Python中检查一些东西。
这不是我不喜欢gdb,而是我不喜欢它有限的命令..
更新: GDB现在可以开箱即用with Python。这解决了canned sequences of commands的许多限制。
答案 0 :(得分:2)
我不认为为了调试嵌入脚本语言是一个好主意。这绝对是可能的,但是对于你希望能够从脚本语言访问的所有内容,你必须提供一些接口,因为至少我知道 - 没有办法直接调用C ++或者从脚本语言中读取C ++数据结构。如果你不想直接使用gdb,我建议你学习gdb或者寻找gdb前端。我使用ddd并发现它非常有用。 Eclipse CDT的gdb前端也可以使用。使用调试器可以提供更大的灵活性,因为调试器了解C ++及其数据结构,因此允许您在运行时检查任何内容,而无需为此手动编写大量支持代码。
答案 1 :(得分:1)
首先:您可以非常轻松地使用GDB打印出所有这些内容。进入GDB后,您可能想要尝试“帮助数据”显示的内容。
你使用哪个IDE?您可能想要尝试跨平台的IDE Code :: Blocks,它可以非常巧妙地连接GDB。
如果您想与其他语言交互,可能需要查看“Lua”。这很容易学习。 见http://en.wikipedia.org/wiki/Lua_%28programming_language%29
Lua旨在嵌入到其他应用程序中,因此它提供了一个强大,易用的C API。 API分为两部分:Lua核心和Lua辅助库。
当然,这也适用于C ++。
答案 2 :(得分:0)
如果这是一个好主意或坏主意,我无法帮助解决问题。
但你可以看看Chaiscript这对c ++来说真的很容易使用
答案 3 :(得分:0)
Python是应用程序脚本语言的一个很好的选择。它不是一个强有力的论据,但我知道lua广泛用于游戏编程(我知道为什么),它可能是有用的,因为你使用OpenGL。
答案 4 :(得分:0)
使用 lua - 它是基于简单堆栈的解释器。使用非常干净的API。
例如:Simple code that add dt_format|dt_convert functions to lua