如何在android上调试纯本机代码?

beh*_*ehe 5 debugging android native-code

我已经从纯C++代码构建了二进制可删除代码,并且在Android设备上运行时会提示时间错误.

我如何调试Android的纯本机代码?似乎现有方法不适用于纯本机代码.

beh*_*ehe 5

第 1 步:gdbserver 和未剥离的 本机二进制可执行文件(假设它命名为 testexec)放在 android 模拟器上。例如,您可以将其放在文件夹/data/data/test 下。并使用chmod命令为其添加权限。

Step2: 启动gdb调试器。此步骤由以下子步骤组成:

步骤 2.1:通过在主机终端上键入命令来启动模拟器的 gdb 调试器:

 adb shell /data/data/test/gdbserver 10.0.2.2:1234 /data/data/test/testexec 
Run Code Online (Sandbox Code Playgroud)

然后模拟器将侦听端口 1234。

步骤2.2:将本地机器的gdb调试器与模拟器的gdbserver连接:

telnet localhost 5554 
Run Code Online (Sandbox Code Playgroud)

它会提示:

Android 控制台:键入“帮助”以获取命令列表

好的

然后输入:

redir add tcp:1234:1234
Run Code Online (Sandbox Code Playgroud)

启用数据重定向,然后键入

exit
Run Code Online (Sandbox Code Playgroud)

Step2.3:启动本机的gdb调试器。输入:

arm-linux-androideabi-gdb.exe YOUR_ EXECUTABLE_PATH_ON_LOCAL_MACHINE\testexec
Run Code Online (Sandbox Code Playgroud)

之后,输入

target remote localhost:1234
Run Code Online (Sandbox Code Playgroud)

连接到 gdbserver。

最后,祝您调试愉快!


Chr*_*son -1

Android 支持使用GDB。但是,我应该注意,如果“纯 C++”意味着应用程序中根本没有 Java,那么这在技术上是不允许的(尽管您绝对可以这样做)。请参阅NDK 页面。