我有一个带共享库的项目(动态加载),我正在尝试调试它。我收到以下错误消息:
No source file named /home/username/Code/path/to/project/MyFile.cpp.
在搜索了其他线程之后,我确保我正在使用-g进行编译,并且相应的文件夹位于调试配置的源路径选项卡上。奇怪的是它给出了正确的绝对路径:它引用的文件确实存在,所以我不明白为什么它不认为它存在。
任何人都知道怎么办?
答案 0 :(得分:23)
我刚遇到同样的问题,虽然我的断点在可执行文件本身,而不是在共享库中。要解决这个问题,我必须打开“调试配置”,选择我的调试配置并调整以下设置:
对于共享库中的断点,您可能需要Debugging with eclipse cdt and gdb和Why does eclipse cdt ignore breakpoints中的其他信息(尤其是延迟断点)。
注意:这是指Eclipse Kepler(4.3)和gdb 7.4。
答案 1 :(得分:2)
我遇到了同样的问题,但就我而言,这是我的错。我的一些项目设置为Release配置,调试器自然找不到源文件信息。
答案 2 :(得分:1)
我遇到了同样的问题。我无法在共享库文件(.so)中设置断点,该文件在与我的程序不同的地方编译。解决这个问题:
我还没有弄清楚如何对未来和过去的所有调试配置进行此更改,以便我不必每次都添加此目录,但如果我确实想到这一点,我会尝试稍后更新。
答案 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工具链中提供。