gdb --help # 可查看配置文件路径
全局配置/etc/gdbinit
;用户配置文件~/.gdbinit
美观打印STL
当你尝试使用 GDB 的 "print"(打印)命令来显示向量、堆栈或任何其他 GDB 抽象数据结构的内容时,你将得到无用的结果。
GDB7.0之后,将支持用Python编写pretty-printers
这一特性配合libstdc++ svn(git)
仓库,就是可视化C++容器的最好方式
配置方法主要分为两步
- 从gcc的仓库拉取对应的Python目录
- 配置gdbinit文件,使之加载pretty-printers脚本
python
import sys
sys.path.insert(0, '/path/to/gdb_printers/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
info pretty-printers # 可查看已加载的pretty-printer
参考链接
STLSupport - GDB Wiki(看这个即可)
gcc - git
Writing a Pretty-Printer
可能出现的错误
-
路径配置错误,导致导入报错
路径写到Python即可
--
-
版本错误
在打印unordered_map时,报错,说是缺少方法或成员
可能的原因:因为编译新项目,更新了动态库libstdc++.so.6.19->libstdc++.so.6.21
导致STL代码与gcc提供的printers不匹配
解决方案:从gcc仓库下载对应版本的printers,在配置文件中加载
-
pretty-printers重复加载(未解决)
这个报错是解决第二个问题的副作用,在~/.gdbinit
中加载了对应版本的Python脚本之后
就报了这个错误,但是再次查看unordered_map时,却正确了,于是没管这个报错(虽然报错但能正确工作)
标签:gcc,配置,GDB,报错,pretty,printers,加载 From: https://www.cnblogs.com/lifeAddicted/p/18261791参考链接
gcc与libstdc++版本对应关系