【vscode,gdb】在vscode调试时显示STL容器内容(开启gdb的pretty-printing)

发布于:2024-06-07 ⋅ 阅读:(144) ⋅ 点赞:(0)
  • 在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

网站公告

今日签到

点亮在社区的每一天
去签到