过去几天我一直在努力解决一个问题,我正在尝试在运行Linux的嵌入式ARM设备上远程调试应用程序。我的应用程序是用C ++编写的,并在SUSE Linux机器上交叉编译,然后部署到嵌入式ARM平台。该应用程序包含一个小型主程序,可调用一堆共享库。我一直在共享库中设置断点,但每当我开始调试会话时,我都会遇到可怕的“无源文件命名”错误。只是为了回顾:
如果我的源文件名为/home/foo/bar.cpp并且我在该文件中设置了一个断点,那么Eclipse中的Debugger Console会显示消息
No source file name /home/foo/bar.cpp
当我启动调试器会话并连接到gdbserver时。但是,如果我现在在调试器控制台中键入“info sources”,我的源文件将显示在“已读入符号的源文件:”列表下。我还在Preference-> Debug-> GDB中启用了“显示GDB跟踪控制台”选项,它显示GDB尝试设置断点但是吐出“没有命名的源文件”错误:
001,518 26-break-insert -f /home/foo/bar.cpp:277
001,519 &"No source file named /home/foo/bar.cpp.\n"
001,519 26^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending=\
/home/foo/bar.cpp:277",times="0",original-location="/ho\
me/ foo/bar.cpp:277"}
001,519 (gdb)
在控制台日志中进一步向下,它再次显示正在读取该源文件的符号。
我的第一个问题是谁在抱怨无法找到源文件? GDB还是GDBServer?我已经在Eclipse-&gt; Debug Configuration-&gt; Source选项卡中以几乎所有可用的方式将所有源路径设置为我的不同工作区项目,但无论我如何输入路径,它似乎没有任何区别(绝对路径,工作空间,项目等。)
任何帮助都非常感谢!
感谢。