VS Code 版本信息:
安装以下插件:
点击 debug 图标 ,再点击 create a launch.json file 创建 launch.json 文件。
launch.json 文件用于配置和管理调试会话。这个文件定义了一系列参数,指导 VS Code 如何启动程序和附加调试器。
添加 启动或附加调试器 的配置,这次配置使用的是 “{} C/C++: (gdb) Launch” ,这些选项的含义在文章末尾处。
根据实际需要调整配置,这里之调整 program :
program 的值为将要 debug 的可执行程序路径,这里使用绝对路径亦可。
在源文件的代码处打断点:
按 F5 进行调试:
上图红框中的按键的作用,从左到右依次是:
- 继续 / 暂停 F5
- 跳过 F10
- 跳入 F11
- 跳出 Shift+F11
- 重启 Ctrl+Shift+F5
- 停止 Shift+F5
这次 launch.json 的具体内容如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/simple_publisher",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
启动或附加调试器的配置项作用:
这些选项是在不同编程和调试环境中用于启动或附加调试器的配置。下面将解释每一个选项的作用:
C/C++ (GDB)
- Attach:这个选项用于将GDB调试器附加到一个已经运行的进程上。这允许你调试一个已经启动的程序,而不是从头开始启动它。当你想要调试一个已经运行的进程,或者调试一个由其他方式(如系统启动脚本)启动的程序时,这个选项会非常有用12。
- Launch:这个选项用于通过GDB启动一个新的C/C++程序进行调试。当你想要从头开始调试一个程序,并且控制它的启动过程时,你会使用这个选项1。
Chrome
- Attach:对于Chrome浏览器,Attach选项可能用于将调试器附加到一个已经运行的Chrome进程上,以调试该进程中的JavaScript或其他代码。然而,请注意,Chrome的调试通常使用DevTools或其他工具,而不是直接使用GDB或LLDB。
- Launch:在Chrome中,Launch可能指的是启动一个新的浏览器实例或标签页以进行调试。这通常是通过DevTools或其他工具来完成的,而不是直接通过调试器命令。
CodeLLDB
CodeLLDB是一个在Visual Studio Code等IDE中使用的LLDB调试器插件。
- Attach by Name:这个选项允许你通过进程名附加到正在运行的进程。
- Attach to PID:这个选项允许你通过进程ID(PID)附加到正在运行的进程。
- Custom:这个选项可能允许你定义自定义的附加或启动选项。
- Debug a Cargo Target 和 Debug Cargo Tests:这些选项特定于Rust语言,用于调试通过Cargo管理的Rust项目。Cargo是Rust的包管理器和构建工具。
- Launch:这个选项用于通过LLDB启动一个新的程序进行调试。
Pipe Attach 和 Pipe Launch
- Pipe Attach 和 Pipe Launch:这些选项可能指的是通过管道(pipe)机制来附加或启动调试会话。管道是一种在Unix和类Unix系统(如Linux和macOS)中用于进程间通信的机制。这些选项可能允许你通过特定的管道接口与调试器进行交互。然而,请注意,这些选项的具体实现和行为可能会因使用的调试器和IDE的不同而有所不同。
请注意,上述解释是基于对各个选项的一般理解和常见的调试器用法。具体的实现和行为可能会因使用的工具、IDE和操作系统的不同而有所变化。在使用这些选项时,建议查阅相关工具的文档或帮助资源以获取更详细和准确的信息。