如何在GDB调试过程中显示Qt5相关类的内容

在调试 SiPESC 平台的插件过程中,我们通常需要显示 QString, QList, QVector 等各种 Qt5 相关的数据对象,但是 GDB 默认是不会自动将这些数据对象转换成我们能够识别的形式,这就造成了调试的困难,只能通过打印语句输出到控制台,通过不断地编译、运行、分析、再修改的循环过程来解决。QtCreator 集成开发环境里提供了自动显示 Qt5 数据类的功能,不过不是每个人都喜欢使用,而且在某些情况下也无法使用,例如远程登陆到主机的情况等。

这里我们提供一段 GDB 脚本,共3个 Python 文件,将这3个文件放到用户目录下的 .gdb/qt5printers 子目录下,然后再在用户目录下的 .gdbinit 文件(如果没有就创建一个空文件)中添加下面的一段代码:

python
import sys, os.path
sys.path.insert(0, os.path.expanduser('~/.gdb'))
import qt5printers
qt5printers.register_printers(gdb.current_objfile())
end