Arm 通过gdb服务器远程调试共享库

Arm 通过gdb服务器远程调试共享库,arm,gdb,cross-compiling,eclipse-cdt,gdbserver,Arm,Gdb,Cross Compiling,Eclipse Cdt,Gdbserver,如何在远程目标上调试共享对象?库的源是已知的,但不是加载库的应用程序的源。动态库的编译器是arm linux gnueabihf gcc和gdb multiarch调试器 我尝试过使用EclipseCDT,调试配置是“C/C++附加到应用程序”。我可以连接到目标,但不能单步执行共享库的代码 .gdbinit: 设置架构arm 在上设置挂起的断点 有关所用系统的信息: 目标/远程系统:Raspberry Pi 3(ARM Cortex A53/Raspbian),运行gdb服务器 主机系统:带有

如何在远程目标上调试共享对象?库的源是已知的,但不是加载库的应用程序的源。动态库的编译器是arm linux gnueabihf gcc和gdb multiarch调试器

我尝试过使用EclipseCDT,调试配置是“C/C++附加到应用程序”。我可以连接到目标,但不能单步执行共享库的代码

.gdbinit:

设置架构arm
在上设置挂起的断点

有关所用系统的信息:

  • 目标/远程系统:Raspberry Pi 3(ARM Cortex A53/Raspbian),运行gdb服务器
  • 主机系统:带有Eclipse和gdb multiarch的Linux/Ubuntu
  • 连接:TCP

我知道可以在Raspberry Pi上进行本机调试和编译。但稍后,我们的共享对象将在使用类似处理器体系结构的板上使用,但资源有限。此时,目标系统只提供gdb服务器,我们被迫使用交叉编译和交叉调试。

Q:可以在远程目标上调试共享对象吗?A:是的。但请澄清你所说的“远程”是什么意思。您的工作站是Windpws PC吗?您是否在Windows PC上作为交叉编译器运行Eclipse?您的“gdbserver”运行在哪里?你的“目标”到底是什么?物理硬件,还是虚拟机?等等。请更新你的帖子,更详细地描述你的环境。我已经添加了系统信息。现在我已经尝试使用gdb控制台直接在Raspberry Pi上调试共享库。应用程序在共享库中停止,但我无法单步执行。我只能使用continue,但从这一点来看,应用程序忽略了共享库中的断点,但从控制台输出中,我可以看到库中的函数被正确调用。对于lib的编译,我使用了-g3标志。看看这些链接是否有用:谢谢,第一个链接对我帮助很大。现在我可以在主机上使用gdb multiarch通过gdbserver调试共享库。唯一的问题是停止solib事件不起作用。因此,在加载动态加载后,我必须手动停止程序,加载*.So的符号,设置断点并继续应用程序。挂起的断点也不起作用。在加载库之前是否还有其他可能设置断点?我假设这是使用gdbserver时的问题。