我有一个带有共享库(动态加载)的项目,我正在尝试调试它。我收到以下错误消息:
No source file named /home/username/Code/path/to/project/MyFile.cpp.
在搜索了其他线程之后,我确保我正在使用 -g 进行编译,并且相应的文件夹位于调试配置的源路径选项卡上。奇怪的是它给出了正确的绝对路径:它引用的文件确实存在,所以我不明白为什么它认为它不存在。
有人知道该怎么做吗?
我有一个带有共享库(动态加载)的项目,我正在尝试调试它。我收到以下错误消息:
No source file named /home/username/Code/path/to/project/MyFile.cpp.
在搜索了其他线程之后,我确保我正在使用 -g 进行编译,并且相应的文件夹位于调试配置的源路径选项卡上。奇怪的是它给出了正确的绝对路径:它引用的文件确实存在,所以我不明白为什么它认为它不存在。
有人知道该怎么做吗?
我刚刚遇到了同样的问题,尽管我的断点在可执行文件本身中,而不是在共享库中。为了解决这个问题,我不得不打开“调试配置”,选择我的调试配置并调整以下设置:
对于共享库中的断点,您可能需要使用 eclipse cdt 和 gdb 进行调试以及为什么 eclipse cdt 忽略断点的其他信息(尤其是关于延迟断点)。
注意:这是指 Eclipse Kepler (4.3) 和 gdb 7.4。
我有同样的问题,但就我而言,这是我的错。我的一些项目设置为Release配置,调试器自然找不到源文件信息。
我有同样的问题。我无法在共享库文件 (.so) 中设置断点,该文件在与我的程序不同的位置编译。要解决这个问题:
我还没有想出如何对未来和过去的所有调试配置进行此更改,这样我就不必每次都添加这个目录,但如果我弄清楚了,我会在以后尝试更新。
我有同样的问题,但我的解决方案不同。打开项目 "debug/src" + "release/src" 目录并确保没有 [filename].d 文件包含任何可能已更改名称或不再存在的源文件的名称。我有一个,删除它,因为没有更多的错误。
因此,至少在我的情况下,我假设错误是由超出范围的对象创建的。
如果您同时拥有 cygwin 和 mingw(或其他一些变体),就会发生这种情况。如果来自 cygwin 的 gcc 用于编译源代码,您将在可执行文件中有 cygwin 路径。然后,如果调试器来自 mingw,gdb 将无法解释 cygwin 路径。解决此问题的最简单方法是转到运行 -> 调试配置 -> 调试器并将完整路径设置为 cygwin gdb (C:\cygwin64\bin\gdb.exe)。这为我解决了问题。
我在调试配置设置中按照@Andreas Fester 对调试器选项卡的评论,但找不到“调试器:gdb/mi”,但在源选项卡中,我删除了所有项目并通过单击“添加.. ." 窗口右侧的按钮。这帮助我解决了这个问题
对于 Makefile 项目现有代码。第 1 步检查使用 -g -o0 编译所有源 第 2 步使用 gdbserver 和 arm-yourversion-gdb,它们将在您的 sdk 和 gdb 工具链中提供。