Ubuntu系统VScode调试C程序无法打开read.c文件错误如何解决
这个报错是调试过程中单步进入glibc库函数时,VSCode找不到对应glibc源码文件导致的,可按以下两种方案修复:
方案1:无需调试glibc源码(推荐普通用户使用)
绝大多数场景下我们只需要调试自己写的业务代码,不需要查看glibc内部实现,直接配置gdb跳过系统库函数的单步追踪即可,不需要额外安装依赖:
- 打开
launch.json配置文件,在setupCommands数组中新增如下配置项:
{ "description": "Skip glibc functions during stepping", "text": "skip /build/glibc-*", "ignoreFailures": true }
- 日常调试时如果不需要进入函数内部,使用「步过(step over)」代替「步入(step in)」操作,也可以避免触发该报错。
方案2:需要查看glibc源码的修复流程
如果你确实需要调试glibc内部逻辑,按以下步骤操作即可:
第一步:安装glibc源码和调试符号
打开终端依次执行以下命令:
# 启用系统的源码软件源 sudo sed -i '/^#\s*deb-src/s/^# //' /etc/apt/sources.list # 更新软件源索引 sudo apt update # 安装glibc源码、调试符号包 sudo apt install glibc-source libc6-dbg # 解压源码到对应路径 sudo tar xf /usr/src/glibc.tar.xz -C /usr/src/
第二步:修正sourceFileMap路径匹配
你当前launch.json中配置的源码映射前缀是/build/glibc-YYA7BZ,和报错提示里的glibc构建路径前缀/build/glibc-eX1tMB不一致,修改sourceFileMap配置即可:
"sourceFileMap": { "/build/glibc-eX1tMB": "/usr/src/glibc" }
额外配置修正
你当前的配置还存在两处不匹配的问题,建议同步修正避免后续调试出错:
launch.json中program字段配置为${workspaceFolder}/a.out,但tasks.json里的编译任务生成的可执行文件路径为${fileDirname}/${fileBasenameNoExtension},两者要保持一致。launch.json中preLaunchTask字段配置为C/C++: g++ build active file,但你tasks.json里的构建任务都是gcc版本,需要修改为对应你使用的构建任务的label值,比如默认的C/C++: gcc-9 build active file。
内容的提问来源于stack exchange,提问作者Mariam A.Fathy
相关产品推荐
相关产品推荐

