-
在gdb调试cpp代码时,会发现它无法打印stl库中的容器,所以需要利用pretty-printing来将它打印出来
-
配置方法
-
在home下新建文件夹.gdb,然后在.gdb下新建文件printers.py
-
进入网址https://gcc.gnu.org/git/?p=gcc.git;a=blob_plain;f=libstdc%2B%2B-v3/python/libstdcxx/v6/printers.py;hb=HEAD,把内容复制到printers.py中(网址可能会失效,失效了请联系我),这个printers.py的内容其实就是教gdb怎么显示stl容器
-
在home下新建文件.gdbinit(这个文件其实就是一个bash脚本,每次执行gdb操作的时候都会自动执行这个文件),然后在.gdbinit中添加以下内容:
set print pretty on # 打开美化stl容器内容功能 # 以下是一段python脚本 python import sys sys.path.insert(0, '/home/xxx/.gdb/') # 按实际情况修改目录 from printers import register_libstdcxx_printers register_libstdcxx_printers (None) end
-
然后在vscode的launch.json中添加:
"setupCommands": [ { "text": "-enable-pretty-printing", "description": "enable pretty printing", "ignoreFailures": true } ],
-
-
如果以上操作没有问题,调试的时候就可以看到stl容器能够被正确显示了
-
参考:
- https://blog.csdn.net/yanxiangtianji/article/details/80579236(这个博客.gdbinit文件写得有问题,from libstdcxx.v6.printers import register_libstdcxx_printers应该改为from printers import register_libstdcxx_printers)
- https://blog.csdn.net/code_peak/article/details/121052783
- https://blog.csdn.net/sl8023dxf/article/details/125352791