写了个SPHinXsys的GDB扩展

让GPT-5.2仿照eigen3的gdb.printers写了一个SPHinXsys的GDB扩展。

目前只实现了一个功能——结构化输出ParticleVariables对象(如water_block.getBaseParticles().all_discrete_variables_)的值。ParticleVariables对象储存了所有注册的变量值,它们可以通过getVariableDataByName成员函数获取到,也可以通过BodyStatesRecordingToVtpaddToWrite成员函数输出到VTP文件。以往我们打印这个变量会得到如下结果:

这样看着很费事,至少要点开三级节点才能看到变量名字。现在,加入了我的扩展之后,可以非常清晰地看到每一个vector的数据类型:

再点开每一个节点,就能看到变量名了:

是不是非常方便呢?

如何加入SPHinXsys扩展

需要两步。第一步,在~/.gdbinit中加入以下内容:

第二步,在SPHinXsys源码目录下添加一个tools/gdb的目录,里面新建一个printers.py文件,填入以下内容(代码400多行,太长了,放最后)。

终端启动gdb,没有错误,就说明添加成功了。

然后就可以愉快地调试SPHinXsys了。

以下为printer.py源代码(GPT写的,可能有冗余代码,但我没时间细究了),您也可以在https://gist.github.com/Jasmine969/de522a9893cf8be37883f4c2fed6ab2e找到源代码:

Last updated

Was this helpful?