VS Code中C++程序调试方法及相关配置问题咨询
VS Code调试C++程序指南
一、是否需要安装codelldb扩展?
是的,codelldb是VS Code上跨平台调试C++的常用后端扩展(适配LLVM/Clang环境),也可选择MSVC Debugger(适配Visual Studio编译环境),二者选其一即可,codelldb对多平台支持更友好。
二、是否必须要有launch.json文件?
不是必须,但强烈建议配置。无launch.json时VS Code会用默认启动调试,但默认配置可能和你的编译输出路径、环境不匹配,就会出现跳转到系统头文件(如main.h)、无法进入自定义函数的问题——本质是调试器未关联正确的可执行文件,或编译时未生成调试信息。
三、launch.json核心配置说明
你提供的配置基本可用,关键字段解释如下:
{ "version": "0.2.0", "configurations": [ { "type": "lldb", // 对应安装的codelldb调试扩展 "request": "launch", // 调试请求类型,下文详细说明 "name": "Debug", // 调试配置名称,在调试面板下拉选择 "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 要调试的可执行文件路径,Windows用\\转义,Linux/macOS用/ "args": [], // 程序运行时的命令行参数 "cwd": "${fileDirname}" // 程序运行的工作目录,一般设为源码所在目录 } ] }
补充实用可选配置:
"preLaunchTask": "C/C++: g++.exe 生成活动文件":指定调试前先执行编译任务(需在tasks.json中配置编译任务,且编译命令必须加-g参数生成调试信息)"stopAtEntry": true:启动调试后自动停在main函数入口,方便开始调试
四、"launch"和"attach"的区别
- launch:启动新的程序实例并附加调试器,是最常用的方式——比如直接调试你的C++程序,从main函数开始运行。
- attach:附加到一个已经在运行的进程上调试,适用于调试后台运行程序、或程序启动后出现问题再挂载调试器的场景。
五、断点窗口中的"c++ : catch"和"c++: throw"是什么?
这是异常断点:
c++: throw:程序抛出任何C++异常时,自动触发断点暂停执行。c++: catch:程序捕获到任何C++异常时,自动触发断点。
适合排查程序崩溃、异常相关问题,无需手动在每个throw/catch处加断点。
六、解决无法进入自定义函数的问题
你遇到的跳转到系统头文件的情况,大概率是以下原因:
- 编译时未加
-g参数:必须在编译命令中加入-g,生成包含调试信息的可执行文件,调试器才能关联到你的源码。 - 可执行文件与源码不匹配:确保调试的可执行文件是当前源码最新编译的,旧文件没有对应源码的调试信息。
- 路径错误:检查
program字段的路径是否正确,比如Windows下是否用了正确的转义符\\,或可执行文件生成在其他目录。
内容的提问来源于stack exchange,提问作者Garry
相关产品推荐
相关产品推荐

