You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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源码查找路径:

    1. 当调试中断弹出找不到文件的窗口时,点击Edit Source Lookup Path;
    2. 在弹出的窗口中,点击Add → 选择File System Directory → 点击Browse;
    3. 找到解压后的glibc源码目录下的stdio-common文件夹(例如/usr/src/glibc/glibc-2.31/stdio-common),选中后确认;
    4. 勾选新添加的路径,点击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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:14:56