【问题标题】:Eclipse Debugging CEclipse 调试 C
【发布时间】:2015-12-05 21:37:39
【问题描述】:

环境:

  • 面向 C/C++ 开发人员的 Eclipse IDE 版本:Mars 版本 (4.5.0)
  • Ubuntu 14.04

Eclipse 下的“调试模式”有问题。我尝试调试一个简单的程序作为实验:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    char *s = malloc(1);
    free(s);
    s = NULL;
    return 0;
}

程序正在正确构建并且没有任何错误/警告的情况下运行,但在调试期间我收到以下错误:

我已经搜索了我的整个硬盘驱动器并且文件 malloc.c 不存在。

问题:

  1. 如果找不到文件malloc.c,为什么程序可以编译 并且运行正常?

  2. 为什么调试器在对 编译器?

  3. 过去有没有人看到这个问题并知道解决方案?

  4. 您使用的是哪种带调试模式的编程环境 除了 Eclipse?

我发现了几个类似的主题,但没有一般问题的解决方案:

  1. How can i Escape from "no source available" errors when stepping OVER a stdio function in eclipse (C language, using CDT)
  2. GDB on eclipse debug mode can't find stdlib/rand.c

运行命令:

# apt-get install libc6-dbg
# apt-get source libc6

不能解决问题。

【问题讨论】:

  • 你可能需要一次问一个问题/

标签: c eclipse debugging


【解决方案1】:

要获取源文件 malloc.c,您需要 glibc 的源代码。

如果您必须调试到 glibc,那么您很可能是 glibc 开发人员。在几乎所有其他情况下,通过 glibc 为您提供更好的服务。当您设置断点时,我强烈建议您跳过 glibc 调用。

Glibc 通常不是由大量 C 代码实现,而是由大量用 C API 轻包装的机器特定代码实现,并且每台机器的机器特定代码都不同。

此外,调试器没有问题,它报告说它没有库(在本例中为 glibc)的源代码,并且很乐意继续调试(但它无法向您显示行号,直到它退出 glibc malloc 调用)。

【讨论】:

    猜你喜欢
    • 2013-02-06
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2017-04-11
    • 2016-08-02
    • 1970-01-01
    • 2020-05-15
    • 2013-07-11
    相关资源
    最近更新 更多