- 启动gdb, 用info pretty-printer查看gdb是否支持pretty-printer
- 如果不支持则需要重新编译gdb:
2.1、yum install python-devel -y
2.2、./configure --prefix=/usr/local/gdb --with-python=/usr/bin/python2.7
2.3、~/.gdbinit 中写入如下内容,其中 /usr/share/gcc-9.4.0/python是python pretty printing目录,一般gcc都会自带,填上gcc自带的目录即可。如果没有也可以下载: svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc+±v3/python
python import sys sys.path.insert(0, '/usr/share/gcc-9.4.0/python') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers (None) end
- 编译出来的gdb要加入环境变量,确保第一个被找到,然后就支持pretty-printer功能了
- vscode菜单,运行–》添加配置–》c++(gdb/lldb)–》默认配置
- 会在 .vscode目录下,产生一个新的文件 launch.json
- 双击文件launch.json,可以看到文件内容,此时的配置内容是默认是 c/c++:(gdb)启动模式,意味着 会通过gdb 启动进程
- “program” 填写 可执行文件的全路径。例如:"/opt/dev/build/bin/hello_world"
- “args” 填写 传给可执行文件的启动参数。例如:“-a"
- F5就可以在vscode 下断点,调试了。大部分调试功能还是有的。比起gdb命令行操作简单些,且一次性可以看很多变量值
- 与2中步骤1,2,3相同操作
- 点击右下角 “添加配置”按钮
- 选择c/c++:(gdb)附加模式,同时注释不需要的 《(gdb)启动模式》配置
- “program” 填写 可执行文件的全路径。例如:"/opt/dev/build/bin/hello_world"
- “processId” 填写附加进程id
- F5就可以在vscode 下断点,调试了
- 远程机器开启gdbserver,同时附加到被调试进程,gdbserver 0.0.0.0:2333 --attach pid
- 与2中步骤1,2,3相同操作
- 点击右下角 “添加配置”按钮,选择 c/c++:(gdb)启动模式。注释不需要的 《(gdb)启动模式》配置
- “program” 填写 可执行文件的全路径。这个路径是本机路径,不是远程机器路径。例如:"/opt/dev/build/bin/hello_world"
- “miDebuggerServerAddress”:“192.168.23.51:2333”,远程机器ip和远程gdbserver端口。
- “setupCommands” 另加入一组设置,用于看长字符串。
{
"text":"-interpreter-exec console "set print elements 0" ",
"ignoreFailures":true
}
F5就可以在vscode 下断点,调试远程机器进程了



