gpt4 book ai didi

linux - 使用 gdb/gdbserver 远程调试共享库

转载 作者:IT王子 更新时间:2023-10-29 01:20:37 24 4
gpt4 key购买 nike

我的问题是关于使用 gdb/gdbserver 在嵌入式 arm 处理器上远程调试应用程序。

我可以调试应用程序本身,但应用程序动态链接到实现内部通信协议(protocol)的共享库。我希望能够在共享库函数中设置断点,因此尝试找出一些设备发现问题。

我已经确定库是用调试符号编译的,并由主机端的 gdb 加载,我可以列出库中的函数,甚至可以设置断点,但是一旦我尝试运行应用程序,我就会得到一个错误消息的效果:


无法插入断点 X。
访问内存地址 [Hex 地址] 时出错:输入/输出错误。

其中 X 是 gdb 中的断点编号,[Hex address] 是一个非常小的有效地址。
我在目标和主机上都使用了新库,但是通过 nfs 挂载在目标上通过 mount -o bind newlib oldlib
有没有人知道什么可能是错的?提前致谢。

最佳答案

我看到这个问题是从 2009 年开始的,但是当前的答案已经过时了,所以这里有一个更新:

@Employed Russian 建议必须使用stop-on-solib-event。这不再是真的; NDK r8d 支持尚未加载的 solib 中的挂起断点。

@Brent Piddy 说 stop-on-solib-event 不适用于 gdbserver。从至少 r8c 开始,这也不再成立。我公司有一个产品依赖于 GDB 的这种 NDK 行为,没有它我们会遇到大麻烦。

关于linux - 使用 gdb/gdbserver 远程调试共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com