在VS Code中使用GDB/LLDB调试编译型语言(C/C++/Rust)
发布时间 - 2025-12-07 00:00:00 点击率:次在 VS Code 中调试 C/C++/Rust 程序,关键是正确配置 launch.json、编译时添加 -g(C/C++ 加 -O0)或启用 debug=true(Rust),并确保调试器(GDB/LLDB)路径准确、版本兼容;插件仅提供 UI,核心依赖编译信息、路径映射与权限设置。
在 VS Code 中用 GDB 或 LLDB 调试 C/C++/Rust 程序,核心是配置好 launch.json 并确保调试器和编译产物匹配。重点不是装插件,而是让调试器能正确加载符号、停在源码行、读取变量——这依赖编译选项、路径设置和调试器版本协同。
确保编译时带调试信息
没有调试信息(-g),VS Code 只能看到汇编或无法断点。不同语言写法略有差异:
-
C/C++:用
gcc -g -O0 main.c -o main(-O0避免优化导致变量被优化掉、行号错乱) -
Rust:默认 debug 模式就带完整调试信息,直接
cargo build即可;若用cargo build --release,需在Cargo.toml中显式加debug = true
安装对应调试器和 VS Code 插件
插件只是 UI 桥梁,真正干活的是本地调试器:
-
Linux/macOS:系统自带
gdb或lldb,推荐用lldb(尤其 Rust,兼容性更好
) -
Windows:用
gdb推荐 MinGW-w64(含x86_64-w64-mingw32-gdb),或 WSL 内用原生gdb/lldb -
VS Code 插件:C/C++(Microsoft 官方,支持 GDB/LLDB)、CodeLLDB(纯 LLDB,Rust 用户首选,自动识别
cargo输出)
正确配置 launch.json
不要依赖自动生成的模板,关键字段要按实际路径和调试器类型填准:
-
program:必须是带调试信息的可执行文件绝对路径(如"${workspaceFolder}/target/debug/myapp") -
miDebuggerPath(GDB)或lldbExecutable(LLDB):显式指定调试器路径,避免 VS Code 找错版本(例如 macOS 自带 lldb 版本旧,可填/opt/homebrew/bin/lldb) -
externalConsole:设为true才能在独立终端中看到printf或用户输入 -
env或envFile:需要环境变量时(如LD_LIBRARY_PATH),别漏掉
常见卡点与绕过方法
断不进去、变量显示 、跳转错行?大概率是下面几个地方没对齐:
- 编译路径 vs 源码路径不一致 → 在
launch.json加sourceFileMap映射(例如 WSL 开发时 Windows 路径映射到 Linux 路径) - Rust 使用
cargo run启动 → 不要用它调试,直接调试生成的二进制(target/debug/myapp),否则会多一层 wrapper 进程 - LLDB 在 macOS 上无法 attach 到进程 → 检查是否已执行
sudo DevToolsSecurity -enable并给 Terminal 全盘访问权限 - GDB 提示
ptrace: Operation not permitted(Linux)→ 运行echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
基本上就这些。调通一次后,同一项目后续基本不用再动配置。关键是编译、调试器、launch.json 三者对上号,而不是堆插件或改一堆高级选项。
# linux
# js
# json
# go
# windows
# app
# mac
# ai
# c++
# macos
# rust
# echo
# printf
# 堆
# microsoft
# ui
# 调试器
# 行号
# 的是
# 几个
# 设为
# 能在
# 自动识别
# 停在
# 跳转
# 自带
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Laravel怎么实现验证码(Captcha)功能
网易LOFTER官网链接 老福特网页版登录地址
MySQL查询结果复制到新表的方法(更新、插入)
Python进程池调度策略_任务分发说明【指导】
如何快速登录WAP自助建站平台?
韩国服务器如何优化跨境访问实现高效连接?
利用JavaScript实现拖拽改变元素大小
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Python结构化数据采集_字段抽取解析【教程】
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何用低价快速搭建高质量网站?
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
微信小程序 闭包写法详细介绍
Laravel distinct去重查询_Laravel Eloquent去重方法
html如何与html链接_实现多个HTML页面互相链接【互相】
如何在云虚拟主机上快速搭建个人网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Python文件操作最佳实践_稳定性说明【指导】
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
Laravel集合Collection怎么用_Laravel集合常用函数详解
如何在云指建站中生成FTP站点?
java ZXing生成二维码及条码实例分享
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
如何用已有域名快速搭建网站?
C#如何调用原生C++ COM对象详解
如何基于云服务器快速搭建网站及云盘系统?
b2c电商网站制作流程,b2c水平综合的电商平台?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Python并发异常传播_错误处理解析【教程】
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
音乐网站服务器如何优化API响应速度?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
如何获取上海专业网站定制建站电话?
网站图片在线制作软件,怎么在图片上做链接?
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
Linux系统命令中tree命令详解
JavaScript中的标签模板是什么_它如何扩展字符串功能
如何快速搭建高效服务器建站系统?
开心动漫网站制作软件下载,十分开心动画为何停播?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
三星、SK海力士获美批准:可向中国出口芯片制造设备
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何制作一个表白网站视频,关于勇敢表白的小标题?
Linux系统命令中screen命令详解
原生JS获取元素集合的子元素宽度实例


)