Ubuntu系统下Eclipse CDT调试C语言时缺失printf.c文件的问题求助
Ubuntu下Eclipse CDT调试printf中断的解决方法
问题原因
调试器尝试进入标准库printf的源码执行,但系统未安装glibc源码包,或Eclipse的源码查找路径未包含该文件所在目录,导致调试中断并提示找不到./stdio-common/./stdio-common/printf.c。
解决步骤
方法1:安装glibc源码并配置路径
安装glibc源码包:
打开终端执行命令:sudo apt-get install glibc-source源码会被下载到
/usr/src/glibc目录下。解压源码包:
进入源码目录并解压:cd /usr/src/glibc sudo tar -xf glibc-*.tar.xz(注意替换命令中的
glibc-*.tar.xz为实际下载的文件名,比如glibc-2.31.tar.xz)配置Eclipse源码查找路径:
- 当调试中断弹出找不到文件的窗口时,点击
Edit Source Lookup Path; - 在弹出的窗口中,点击
Add→ 选择File System Directory→ 点击Browse; - 找到解压后的glibc源码目录下的
stdio-common文件夹(例如/usr/src/glibc/glibc-2.31/stdio-common),选中后确认; - 勾选新添加的路径,点击
Apply和OK即可。
- 当调试中断弹出找不到文件的窗口时,点击
方法2:跳过标准库函数调试(无需源码)
如果不需要进入printf这类标准库函数调试,可以直接设置跳过:
- 打开Eclipse的
Window→Preferences→C/C++→Debug→Source Lookup; - 勾选
Skip loading symbols for shared libraries that don't have source; - 或者在调试时,右键点击调用栈中的
printf函数,选择Filter,后续调试就不会进入该函数。
关联代码
#include <stdio.h> int main(){ int arr[10] = {0,1,2,3,4,5,6,7,8,9}; int* parr = &arr[0]; int i = 0; int sz = sizeof(arr)/sizeof(arr[0]); for(i = 0; i< sz;i++){ printf("%d ",*(parr+i)); } return 0; }
内容的提问来源于stack exchange,提问作者user23343178
相关产品推荐
相关产品推荐

