You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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处加断点。

六、解决无法进入自定义函数的问题

你遇到的跳转到系统头文件的情况,大概率是以下原因:

  1. 编译时未加-g参数:必须在编译命令中加入-g,生成包含调试信息的可执行文件,调试器才能关联到你的源码。
  2. 可执行文件与源码不匹配:确保调试的可执行文件是当前源码最新编译的,旧文件没有对应源码的调试信息。
  3. 路径错误:检查program字段的路径是否正确,比如Windows下是否用了正确的转义符\\,或可执行文件生成在其他目录。

内容的提问来源于stack exchange,提问作者Garry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:05:05