转到“调试器”选项卡,并在选项卡顶部选择**“调试器:gdb/mi”**。可能会/可能不会产生影响的因素:在同一个选项卡上还有一个复选框“Use full file path to set breakpoints”(使用完整文件路径设置断点)-我尝试过这个选项,但它似乎并不影响我们观察到的问题(显然,我们的源路径已经是完整路径)。
我遇到了同样的问题。我无法在共享库文件(.so)中设置断点,该文件在与我的程序不同的位置编译。 1.转至“调试配置”的“源”选项卡 1.添加编译目录(我使用了编译所有进程的主makefile的位置,而不是这个进程的makefile所在的位置)。 1.还可以单击“Subdirectories are also used for compilation”(我的子进程makefile是在主位置的子目录中编译的) 我还没有弄清楚如何对将来和过去的所有调试配置进行此更改,这样我就不必每次都添加此目录,但如果我弄清楚了,我将尝试稍后进行更新。
8条答案
按热度按时间um6iljoc1#
我刚刚遇到了同样的问题,尽管我的断点在可执行文件本身中,而不是在共享库中。为了解决这个问题,我必须打开“调试配置”,选择我的调试配置并调整以下设置:
对于共享库中的断点,您可能需要来自Debugging with eclipse cdt and gdb和Why does eclipse cdt ignore breakpoints的附加信息(特别是关于延迟断点)。
kb5ga3dv2#
我也遇到过同样的问题,但在我的情况下是我的错。我的一些项目被设置为发布配置,调试器自然找不到源文件信息。
vxbzzdmp3#
我遇到了同样的问题。我无法在共享库文件(.so)中设置断点,该文件在与我的程序不同的位置编译。
1.转至“调试配置”的“源”选项卡
1.添加编译目录(我使用了编译所有进程的主makefile的位置,而不是这个进程的makefile所在的位置)。
1.还可以单击“Subdirectories are also used for compilation”(我的子进程makefile是在主位置的子目录中编译的)
我还没有弄清楚如何对将来和过去的所有调试配置进行此更改,这样我就不必每次都添加此目录,但如果我弄清楚了,我将尝试稍后进行更新。
new9mtju4#
我遇到了同样的问题,但我的解决方案不同。打开项目“debug/src”+“release/src”目录,并确保没有[filename].d文件包含任何源文件的名称,这些文件可能已经更改了名称或不再存在。我有一个,删除了它,因为没有更多的错误。
因此,至少在我的例子中,我假定错误是由超出范围的对象造成的。
rlcwz9us5#
如果你同时有cygwin和mingw(或者其他的变体),就会发生这种情况。如果使用cygwin的gcc来编译源代码,那么在可执行文件中就会有cygwin路径。然后,如果调试器来自mingw,gdb将无法解释cygwin路径。解决这个问题最简单的方法是转到运行-〉调试配置-〉调试器,并设置cygwin gdb的完整路径(C:\cygwin 64\bin\gdb.exe)。这就为我解决了这个问题。
yeotifhr6#
我按照@Andreas Fester的注解找到调试配置设置中的调试器选项卡,但找不到“调试器:gdb/mi”,但在源选项卡中,我删除了所有项目,并通过单击窗口右侧的“添加...”按钮添加了“绝对文件路径”。这对我解决这个问题很有帮助
9rygscc17#
谢谢之前所有的建议。然而,对我来说,上面的建议都没有帮助。
在我的案例中,解决方案非常简单:再次编译代码,并确保放置断点的文件也被相应的新编译文件所替换。然后停止调试器并再次运行调试器,错误消息就会消失。就这样。您不需要在Eclipse调试器本身内部更改任何内容。我的Eclipse调试器版本是“Release 9.21”(Eclipse独立C/C++ GDB图形调试器)。
希望这对你也有帮助!
eaf3rand8#
对于Makefile项目现有代码。步骤1检查编译所有源代码,使用-g -o 0步骤2使用gdbserver和arm-yourversion-gdb,它们将在您的sdk和gdb工具链中提供。