0.背景
gdb原生态对于STL的输出不太直观,为了可以直观的查看STL的值,我们进行相关的配置。
1.方式概览
要实现这种需要有多种方式,https://sourceware.org/gdb/wiki/STLSupport 这里介绍了3种主要的方式。我们这里介绍第一种方式,这种方式不仅最简单也是最好用的。
提一下第二种方式,在大型项目中通常我们的容器也会嵌套别的容器,这种情况下第二种方式就比较弱了,不能很好的展示。
2.使用方式
使用下列命令下载python脚本(需要安装svn),这个脚本在gdb高版本应该是自带的,不过这里我们统一下载下。最好放到一个容易辨识的文件夹里,这里取名字stl_pretty_printer。
# 需要安装svn,默认mac是自带的,如果没有使用下列命令安装
brew install svn
# 建立stl_pretty_printer目录
mkdir stl_pretty_printer
# 进入
cd stl_pretty_printer
# 下载脚本
svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python
.gbdinit
是gdb的配置文件,在启动的时候加载,我们需要将以下内容复制到其中。
python
import sys
sys.path.insert(0, '/xxx/xxx/stl_pretty_printer/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
重新启动gdb即可。
如果执行了以上操作发现不起作用,或者在启动gdb时候提示“不支持python的脚本”,需要检查在安装gdb时候是否启用了python支持。
如果没有启用,需要重新安装,参见这篇博客 https://blog.csdn.net/wj1066/article/details/83653153 ,只是在configure的时候使用如下参数。
./configure --with-python
如果在make的时候提示Python missing or unusable error while cross compiling GDB
,请切换到系统默认python或者安装python-dev。
3.补充
为了格式更加美观可以加上:
set print pretty on
如果出现During startup program terminated with signal ?, Unknown signal
这个错误,这个是因为mac系统的问题。加上:
set startup-with-shell off
Reference