用于Qt5的配置文件GDB python pretty printers

2024-05-23 13:48:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用GDB python API改进我自己的GDB漂亮打印机。在

目前我正在用一个核心测试它们。在

我正在尝试获取一些QMap,QList内容的信息,但是它们有太多的元素,因此用它的内容打印它们非常慢(几分钟)。在

所以,我想知道是否有任何已知的方法来描绘哪些部分速度较慢。在

我已经检查了Python profile manual和{a2},但是我不知道如何在GDB执行周期中使用它们。在

在gdbcommands.txt公司名称:

source /home/user/codigo/git/kde-dev-scripts/gdb/load-qt5printers.py
source /home/user/codigo/myownprinters.py
core ../../core.QThread.1493215378
bt
p longQMapofQList

链接到load-qt5-printers.py content

然后我启动gdb来自动运行这些命令:

^{pr2}$

Tags: pycoreapisource内容home核心打印机
1条回答
网友
1楼 · 发布于 2024-05-23 13:48:35

they have so many elements that printing them with it's contents is really slow (minutes).

Qt-pretty打印机是否遵守print-elements限制?你的限额定得太高了吗?在

分析在这里不太可能有帮助:如果您要打印一个包含(比如)1000个元素的列表,那么GDB可能需要执行10000个或更多的ptrace调用,并且~所有的时间都在等待这些调用。在

您可以在strace -c下运行gdb,并观察在打印包含10个元素和100个元素的列表时执行了多少个ptrace。在

如果增加是线性的,你可以尝试优化漂亮的打印机来减少访问。如果增长是二次方的,那么漂亮的打印机可能会进行不必要的指针跟踪(这当然可以解释为什么打印长列表需要几分钟)。在

相关问题 更多 >