本文介绍了两种方法去优化显示GDB调试过程中的STL数据值,比如Vector、Map等。提高Debug的效率。 1. 开启pretty-print功能 在使用vscode调试时,不能像clion一样直接查看STL容器中的内容,比如String,只能看到指针和长度等信息,不能直接看到字符串。 在launch.json中添加如下配置,关于launch.json如何配置参考网上的资料和以...
但是这些容器类结构不是gdb维护的内容,必然会经常变化,了解stl容器类的实现也只有代码作者才知道,所以这个pretty-print最好由stl库的作者来配合代码一起实现。 这反过来就需要gdb提供一种机制,可以让源代码(C++源代码)的作者注册特定结构的printer。gdb提供的这种注册机制就是基于python实现的pretty-printer。 使用python...
其中,'/path/to/stl-pretty-printer'是STL漂亮打印器的路径,你可以从GitHub上找到并下载。 将.gdbinit文件放置在你的工程目录下,或者将其路径添加到环境变量中。 使用Gdb调试你的程序,并在需要打印STL容器的地方设置断点。 当程序运行到断点处时,可以使用"p"命令(或"print"命令的简写)来打印STL容器变量。例如,对...
我已按照 GDB wiki 上 的说明安装用于查看 STL 容器的 python 漂亮打印机。我的 ~/.gdbinit 现在看起来像这样: python import sys sys.path.insert(0, '/opt/gdb_prettyprint/python') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers (None) end 但是,当我运行...
以可读方式打印STL 当你尝试使用 GDB 的 "print"(打印)命令来显示向量、堆栈或任何其他 GDB 抽象数据结构的内容时,你将得到无用的结果。 GDB7.0之后,将支持用Python编写pretty-printers 这一特性配合libstdc++ svn(git)仓库,就是可视化C++容器的最好方式 ...
下载checkout STL的pretty printer。 设置好.gdbinit以后,运行告知已经注册,不能重复注册。 $locate printers.py 发现在/opt/local/share/gcc-4.7/gcc-4.7.1/python/libstdcxx/v6已经有一份现成的了。 好吧,我们就使用现有的好了。 写个程序,调试,print,怎么回事?还是不成?
如果使用gdb 自带的STL pretty printer,那么我们会得到如下简洁的结果,(gdb) p s $1 = {mName = ...
gdb调试中的"pretty" 1. 解释什么是gdb调试中的"pretty" 在gdb调试中,"pretty"指的是一种美化输出格式的功能,它允许用户以更易读的方式查看复杂数据结构(如C++ STL容器、自定义结构体等)的内容。通过使用"pretty print"(美化打印),gdb可以显示数据结构的内部成员和值,而不仅仅是内存地址或原始数据,从而极大地提...
在咨询了谷歌之后,发现了一个有用的帖子https://stackoverflow.com/questions/42896196/pretty-print-not-working-for-c-stl-list。 以下这段用引用自该帖子: 很好地打印出数据结构是一些GDB扩展 机制的Python 代码的函数。GDB 手册中有一节介绍了GDB中的漂亮打印。
set print pretty on set print object on set print static-members on set print vtbl on set print demangle on set demangle-style gnu-v3 set print sevenbit-strings off 在启动gdb时,输入source [脚本所在位置]/stl_views_1.0.3.gdb来启用这个工具 ...