“没有命名的源文件”错误调试Eclipse CDT

时间:2012-10-19 00:28:20

标签: debugging gdb eclipse-cdt

我有一个带共享库的项目(动态加载),我正在尝试调试它。我收到以下错误消息:

No source file named /home/username/Code/path/to/project/MyFile.cpp.

在搜索了其他线程之后,我确保我正在使用-g进行编译,并且相应的文件夹位于调试配置的源路径选项卡上。奇怪的是它给出了正确的绝对路径:它引用的文件确实存在,所以我不明白为什么它不认为它存在。

任何人都知道怎么办?

7 个答案:

答案 0 :(得分:23)

我刚遇到同样的问题,虽然我的断点在可执行文件本身,而不是在共享库中。要解决这个问题,我必须打开“调试配置”,选择我的调试配置并调整以下设置:

  • 在底部,有一个链接“选择其他...”以选择“创建过程”启动器。单击链接。勾选“使用配置特定设置”。选择“标准创建流程启动器”,然后按“确定”。
  • 转到“调试器”选项卡,然后在选项卡顶部选择“Debugger:gdb / mi”。可能/可能没有什么区别:在同一个选项卡上还有一个复选框“使用完整文件路径设置断点” - 我玩过这个,但它似乎没有影响我们观察到的问题(显然,我们的源路径)已经完整的路径。)

对于共享库中的断点,您可能需要Debugging with eclipse cdt and gdbWhy does eclipse cdt ignore breakpoints中的其他信息(尤其是延迟断点)。

注意:这是指Eclipse Kepler(4.3)和gdb 7.4。

答案 1 :(得分:2)

我遇到了同样的问题,但就我而言,这是我的错。我的一些项目设置为Release配置,调试器自然找不到源文件信息。

答案 2 :(得分:1)

我遇到了同样的问题。我无法在共享库文件(.so)中设置断点,该文件在与我的程序不同的地方编译。解决这个问题:

  1. 转到“调试配置”,“源”选项卡
  2. 添加一个编译目录(我使用了编译所有进程的主makefile的位置,而不是此进程的makefile所在的位置)。
  3. 还点击“Subdirectories也用于编译”(我的子进程makefile编译在主要位置的子目录中)
  4. 我还没有弄清楚如何对未来和过去的所有调试配置进行此更改,以便我不必每次都添加此目录,但如果我确实想到这一点,我会尝试稍后更新。

答案 3 :(得分:0)

我有同样的问题,但我的解决方案不同。打开项目" debug / src" +"发布/ src"目录并确保没有[filename] .d文件包含可能已更改其名称或不再存在的任何源文件的名称。我有一个,删除它,因为没有更多的错误。

因此,我认为,至少在我的情况下,错误是由超出范围的对象创建的。

答案 4 :(得分:0)

如果您同时拥有cygwin和mingw(或其他一些变体),则会发生这种情况。如果使用来自cygwin的gcc编译源代码,那么您将在可执行文件中使用cygwin路径。然后,如果调试器来自mingw,gdb将无法解释cygwin路径。解决这个问题的最简单方法是转到Run - >调试配置 - >调试器并设置cygwin gdb的完整路径(C:\ cygwin64 \ bin \ gdb.exe)。这解决了我的问题。

答案 5 :(得分:0)

我在调试配置设置中跟随@Andreas Fester对调试器选项卡的评论,但无法找到"调试器:gdb / mi",但在源选项卡中,我删除了所有项目并添加了#34;绝对文件路径"点击"添加..."窗口右侧的按钮。这帮助我解决了这个问题

答案 6 :(得分:-1)

用于Makefile项目的现有代码。 步骤1检查使用-g -o0编译所有源 第2步使用gdbserver和arm-yourversion-gdb,它将在你的sdk和gdb工具链中提供。