为QUuid类制作GDB调试帮助程序
Making a GDB debugging helper for the QUuid class
我在我的项目中使用QUuid
类,为了测试和调试目的,很高兴看到QUuid对象是人类可读的形式,而不是它们的低级形式。
出于某种原因,Qt的人员还没有包含这种类型的转储方法,所以我试图根据本文档和本指南自己创建一个转储方法。
我不熟悉Python,所以很不幸,我无法运行一些东西。有人能帮我创建这样一个函数吗?它只会在QtCreator的value列中显示QUuid::toString()的输出?
编辑:Mitko的解决方案非常有效。我把它扩展了一点,所以如果需要的话,细节仍然可以阅读:
from dumper import *
import gdb
def qdump__QUuid(d, value):
this_ = d.makeExpression(value)
finalValue = gdb.parse_and_eval("%s.toString()" % (this_))
d.putStringValue(finalValue)
d.putNumChild(4)
if d.isExpanded():
with Children(d):
d.putSubItem("data1", value["data1"])
d.putSubItem("data2", value["data2"])
d.putSubItem("data3", value["data3"])
d.putSubItem("data4", value["data4"])
下面的python脚本应该完成这项工作:
from dumper import *
import gdb
def qdump__QUuid(d, value):
this = d.makeExpression(value)
stringValue = gdb.parse_and_eval("%s.toString()" % this)
d.putStringValue(stringValue)
d.putNumChild(0)
使用Qt Creator最简单的方法是将这些行粘贴到<Qt-Creator-Install-Dir>/share/qtcreator/debugger/personaltypes.py
文件的末尾。在这种情况下,您可以跳过第一行,因为它已经在文件中了。
由于personaltypes.py
文件在更新Qt Creator时被覆盖,您可能需要将上面的脚本放在自己的文件中。在这种情况下,您需要配置Qt Creator来使用您的文件。您可以转到工具>选项…>调试器>GDB>额外调试帮助程序>浏览并选择文件。
注意:
- 这个脚本只能在QtCreator内部工作,因为我们使用它的特定dumper(例如
putStringValue
) - 我们调用
QUuid::toString()
,它创建了一个QString
对象。我不确定gdb和python是如何处理的,也不确定是否需要清理它以避免内存泄漏。对于调试来说,这可能不是什么大事,但需要注意
相关文章:
- 带有 GDB 调试器的 VS 代码内存视图
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 使用 ssh 重新连接到远程 Ubuntu 机器后,如何继续使用 gdb 调试 c++ 代码?
- 标识gdb调试器中符号的源文件名
- 如何在启动过程中崩溃时使用 gdb 调试可执行文件
- 使用 gdb 调试 linux 守护程序的初始启动
- 如何在使用 gdb 调试期间从 stdin 读取
- GDB 调试器访问未找到的文件
- "gdb"调试器奇怪地跳过断点
- VS Code 上的简单 GDB C++调试失败,并显示 NullReferenceException
- 如何使用 gdb 调试 LLVM 检查器时以图形方式查看 CFG
- 在用GDB调试核心转储时,知道谁是继承者
- 如何通过GDB调试nodejs addon
- gdb 7.5.1调试通过g 4.7.2构建的可执行文件的问题
- 如何在我自己的全系统模拟器上实现 GDB 调试
- 使用GDB调试时,分段故障消失
- 找不到GDB调试符号
- 如何在 Eclipse 中启动 gdb 调试之前运行 linux 脚本
- 如何使用 GDB 调试插件
- 如何使用 GDB 调试 GUI 程序