在Android上使用GDB调试本地应用程序

4

我有一个本地的C++应用程序,它应该在Android设备上运行。应用程序在启动时崩溃,很可能是在调用链接库中的函数时发生的。我正在尝试使用gdb进行调试,但我无法成功。

我在Android设备上的某个任意选定的端口(2000)上启动了gdbserver:

shell@msm8996: gdbserver :2000 my_app
Process my_app created; pid = 3420
Listening on port 2000

现在我正在尝试使用Android-NDK提供的gdb来连接我的主机系统(Windows 7)上的该进程。

C:\> gdb
(gdb) attach 3420
Can't attach to process.
(gdb) target remote :2000
:2000: The system tried to join a drive to a directory on a joined drive.

问题是什么?

编辑: 在运行gdb之前,我使用adb转发了2000端口:

adb forward tcp:2000 tcp:2000

这至少帮助我建立了一些沟通,但是:
(gdb) target remote :2000
Remote debugging using :2000
warning: Architecture rejected target-supplied description
Remote 'g' packet reply is too long: 00000000000000000000000000000... 

在设备端:

Listening on port 2000
Remote debugging from host 127.0.0.1
readchar: Got EOF
Remote side has terminated connection.  GDBserver will reopen the connection.
Listening on port 2000
1个回答

3
您很可能正在使用不同的gdb架构/版本。当您启动gdb时,它会显示一行类似于以下内容的信息(我展示的是我的GDB显示的内容):

This GDB was configured as "--host=x86_64-linux-gnu --target=arm-Linux-android"

请检查这是否与您手机的架构相匹配。
下载正确的GDB版本可能会解决您的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接