使用GDB附加运行中进程失败,提示read.c文件不存在
解决GDB附加进程时提示read.c缺失及附加失效问题
澄清:GDB其实已经成功附加
你看到的../sysdeps/unix/sysv/linux/read.c: No such file or directory只是源码文件找不到的提示,并非附加失败。验证方法:
- 在GDB提示符下输入
info proc,如果能显示进程信息,说明已经附加成功; - 输入
continue,进程会继续运行,也能证明附加状态正常。
解决libc源码缺失问题(消除read.c报错)
1. 修复sources.list的deb-src源
编辑sudo nano /etc/apt/sources.list,确保添加对应Ubuntu版本的deb-src源(以20.04为例):
deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
保存后执行:
sudo apt update
2. 安装libc6源码包
执行命令安装:
sudo apt install libc6-source
源码会被下载到/usr/src/glibc目录下。
3. 配置GDB自动加载源码路径
编辑~/.gdbinit文件(没有就创建),添加一行:
set directories /usr/src/glibc/sysdeps/unix/sysv/linux/
这样每次启动GDB都会自动识别libc的源码路径,不会再出现read.c找不到的提示。
关于pwntools/pwndbg无法使用的问题
只要GDB成功附加进程(通过info proc验证),pwntools/pwndbg就能正常工作。之前的失效误解是被read.c的报错信息干扰,解决源码问题后即可恢复正常。
内容的提问来源于stack exchange,提问作者Jen Smith
相关产品推荐
相关产品推荐

