过去几天我一直在努力解决一个问题,我试图在运行Linux的嵌入式ARM设备上远程调试应用程序 . 我的应用程序是用C语言编写的,并在SUSE Linux机器上交叉编译,然后部署到嵌入式ARM平台 . 该应用程序包含一个小型主程序,可调用一堆共享库 . 我一直在共享库中设置断点,但每当我开始调试会话时,我都会遇到可怕的“无源文件命名”错误 . 只是为了评论:

  • 我正在运行Eclipse Neon.3 4.6.3,CDT 9.3.0

  • 我的所有源文件都是用-g3编译的

  • 我使用gdbserver在Linux ARM机器上启动程序 .

  • 然后我在Eclipse中启动调试会话并连接到远程Linux机器上的gdbserver . (使用C远程应用程序配置)

如果我的源文件名为/home/foo/bar.cpp并且我在该文件中设置了一个断点,那么Eclipse中的Debugger Console会显示该消息

No source file name /home/foo/bar.cpp

当我启动调试器会话并连接到gdbserver时 . 但是,如果我现在在调试器控制台中键入“info sources”,我的源文件将显示在“已读入符号的源文件:”列表下 . 我还在Preference-> Debug-> GDB中启用了“Show GDB traces console”选项,它显示GDB尝试设置断点但是吐出“No source file named”错误:

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-> Debug Configuration-> Source选项卡中以几乎所有可用的方式将所有源路径设置为我的不同工作区项目,但无论我如何输入路径(绝对路径),它似乎没有任何区别 . ,工作区,项目等)

任何帮助非常感谢!

谢谢 .