当前位置: 首页 > web >正文

vscode调试c/c++

1. 调试配置选择

  • 调试 C 程序:选择 "Debug C Program"(调用 gcc 编译)。

  • 调试 C++ 程序:选择 "Debug C++ Program"(调用 g++ 编译)。


2. 调试步骤

  1. 打开代码文件:确保当前编辑器打开的是 .c 或 .cpp 文件。

  2. 设置断点:在代码行号左侧点击设置断点(红点)。

  3. 启动调试

    • 按 F5 或点击左侧调试图标 → 顶部下拉菜单选择调试配置(如 Debug C Program)→ 点击绿色箭头启动。

  4. 调试控制

    • 继续(F5):运行到下一个断点。

    • 单步跳过(F10):执行当前行,不进入函数。

    • 单步进入(F11):进入函数内部。

    • 查看变量:在调试侧边栏的 VARIABLES 区域查看当前变量值。


3. 关键验证点

检查编译是否成功
  • 调试前会自动执行 preLaunchTask(即 tasks.json 中的编译任务)。

  • 如果编译失败:

    • 检查终端输出错误(如语法错误)。

    • 确保 gcc/g++ 命令在终端可直接运行(验证环境变量配置)。

检查调试器路径
  • Windows:若使用 MinGW,需将 miDebuggerPath 改为绝对路径(如 "C:/TDM-GCC-64/bin/gdb.exe")。

  • Linux/macOS"gdb" 通常可用(确保已安装 gdb/lldb)。

检查输出文件路径
  • 你的配置将生成 .out 文件(如 main.c → main.out),需与 launch.json 的 program 字段一致。


4. 常见问题解决

调试时提示“无法找到 .out 文件”
  • 原因:编译失败或路径错误。

  • 解决:

    1. 手动运行编译命令(如 gcc -g main.c -o main.out)确认是否成功。

    2. 检查 ${fileDirname}/${fileBasenameNoExtension}.out 路径是否正确。

断点未生效
  • 确保编译时包含 -g 参数(生成调试信息)。

  • 重新启动调试会话(有时需清理旧的可执行文件)。

Windows 下终端无输出
  • 将 externalConsole 改为 true(部分 Windows 环境需要外部终端显示输出)。

launch.json

{"version": "0.2.0","configurations": [{"name": "Debug C Program","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.out","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,  // 改为 false 使用 VSCode 终端"MIMode": "gdb","miDebuggerPath": "gdb",  // Windows 改为 "C:/TDM-GCC-64/bin/gdb.exe""setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "gcc build active file"  // 编译 C 文件},{"name": "Debug C++ Program","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.out","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "gdb",  // Windows 改为 "C:/TDM-GCC-64/bin/gdb.exe""setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "g++ build active file"  // 编译 C++ 文件}]
}

tasks.json

{"version": "2.0.0","tasks": [{"label": "gcc build active file","type": "shell","command": "gcc","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.out"],"group": "build","problemMatcher": ["$gcc"],"detail": "编译当前 C 文件"},{"label": "g++ build active file","type": "shell","command": "g++","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.out"],"group": "build","problemMatcher": ["$gcc"],"detail": "编译当前 C++ 文件"},{"type": "cppbuild","label": "C/C++: gcc.exe 生成活动文件","command": "C:\\TDM-GCC-64\\bin\\gcc.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}]
}

http://www.xdnf.cn/news/6125.html

相关文章:

  • Python笔记:在环境变量中增加了dll加载路径,python提示DLL加载失败
  • HTML:入门
  • Angular 知识框架
  • 【SQL】如何在 SQL 中统计结构化字符串的特征频率
  • 【位运算】常见算法公式使用
  • 360智语:以全栈技术重塑企业级智能体开发新标杆
  • 银行卡真伪验证助力金融合规-银行卡实名认证接口
  • 电机的导程和脉冲之间的关系
  • Ansible Roles 是一种用于层次化和结构化组织 Ansible Playbook 的机制。
  • SVG 知识详解:从入门到精通
  • 鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页1)
  • 《Effective Python》第2章 字符串和切片操作——Python 字符串格式化的现代选择f-strings
  • Python 之 Flask 入门学习
  • 《P4391 [BalticOI 2009] Radio Transmission 无线传输 题解》
  • 完整的 CentOS 6.10 虚拟机安装启动脚本
  • spark中的转换算子
  • 易学探索助手-项目记录(九)
  • HTTP GET报文解读
  • 学习机器学习的体会与姓名性别预测案例分析
  • CMakeLists生成调用静态动态库可执行demo
  • 论语详解---缠中说禅(整理)
  • 通义千问-langchain使用构建(一)
  • ChromeDriver进程泄漏问题分析与最佳实践解决方案
  • 排序算法详解
  • Electron入门指南:用前端技术打造桌面应用
  • Socket API 核心函数详解
  • 一文了解 HTTP Content-Type:从基础到实战
  • 第六天——贪心算法——字符串分隔
  • 【C++】模板(初阶)
  • 从lightrag的prompt到基于openai Structured Outputs 的优化实现思路