【发布时间】:2020-08-26 10:59:25
【问题描述】:
我正在尝试使用 gdbserver 调试 ARMv7 Android 应用程序 .so。我已经下载了适用于 Mac 的 android NDK,并将位于 prebuilt/android-arm/gdbserver/gdbserver 的 gdbserver 推送到机器上。我正在使用 Nox App Player v3.0 Mac 版。
当附加到进程时,它会产生以下输出:
$ adb shell gdbserver :5055 --attach 2289
Attached; pid = 2289
ptrace(regsets_fetch_inferior_registers) PID=4034: Device or resource busy
ptrace(regsets_fetch_inferior_registers) PID=4034: Function not implemented
ptrace(regsets_fetch_inferior_registers) PID=4034: Function not implemented
Warning: ptrace(regsets_store_inferior_registers): Device or resource busy
Warning: ptrace(regsets_store_inferior_registers): Function not implemented
Warning: ptrace(regsets_store_inferior_registers): Function not implemented
writing register 0: Function not implemented
Exiting
我尝试附加的应用程序随后挂起。模拟器/手机的其余部分可以正常工作,我可以使用主页和菜单按钮关闭应用程序。只是它试图附加的应用程序停止工作,直到我重新启动它。我可以附加到其他随机进程号,即使它确实对此有点抱怨。即使我在它们被暂停时附加应用程序也会出现此问题。检查应用程序的 /data/data/ 文件夹显示 .so 正在运行的应用程序使用的是 ARMv7。
我尝试使用prebuilt/android-x86/gdbserver/gdbserver 版本的gdbserver 来看看会发生什么。这个版本加载过程很好,没有挂起,我可以用 NDK 提供的 GDB 连接到它。当然,这也意味着我无法加载.so,因为gdbserver版本是x86而不是ARM。有没有办法解决这个问题?
【问题讨论】:
标签: android gdb remote-debugging gdbserver