【问题标题】:"No source file named" error debugging Eclipse CDT“No source file named”错误调试 Eclipse CDT
【发布时间】:2012-10-09 13:33:30
【问题描述】:

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

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

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

有人知道该怎么办吗?

【问题讨论】:

    标签: debugging gdb eclipse-cdt


    【解决方案1】:

    我在调试配置设置中关注@Andreas Fester 对调试器选项卡的评论,但找不到“调试器:gdb/mi”,但在源选项卡中,我删除了所有项目并通过单击“添加了“绝对文件路径”添加...”窗口右侧的按钮。这帮助我解决了这个问题

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          1. 转到调试配置,源选项卡
          2. 添加编译目录(我使用了编译所有进程的主makefile的位置,而不是该进程的makefile所在的位置)。
          3. 同样点击“子目录也用于编译”(我的子进程makefile编译在主目录的子目录中)

          我还没有弄清楚如何对未来和过去的所有调试配置进行此更改,这样我就不必每次都添加这个目录,但如果我弄清楚了,我会在以后尝试更新。

          【讨论】:

            【解决方案5】:

            我有同样的问题,但在我的情况下,这是我的错。我的一些项目设置为Release配置,调试器自然找不到源文件信息。

            【讨论】:

            • 我遇到了同样的问题。我忘记使用 -DCMAKE_BUILD_TYPE=Debug 配置我的 CMake 项目。
            【解决方案6】:

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

            因此,至少在我的情况下,我会假设错误是由超出范围的对象造成的。

            【讨论】:

              【解决方案7】:

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

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

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

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

              【讨论】:

              • 不错的答案,我认为它是正确的。您可能还想看看这个问题/.answer:stackoverflow.com/q/801423/1284631
              • 就我而言,在尝试了上述所有步骤都徒劳无功之后,最终安装了更新版本的 gdb(7.4) 修复了它。
              猜你喜欢
              • 2015-02-20
              • 2013-10-19
              • 2016-12-07
              • 1970-01-01
              • 2014-07-17
              • 1970-01-01
              • 1970-01-01
              • 2018-03-23
              • 2011-12-22
              相关资源
              最近更新 更多