gpt4 book ai didi

android - 如何调试未直接集成到 APK 应用程序中的 android native 可执行文件和库

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:11:38 26 4
gpt4 key购买 nike

我有一个 Android 应用程序,它包含一个基于 Java 的 APK、 native 可执行文件和 native 库。 apk 通过套接字与 native (root NDK c/c++)可执行文件和库通信。

我不确定这是否重要,但可执行文件和库是通过 cmake 编译的,并复制为可执行文件,然后以 root 身份运行。我需要使用断点等进行某种类型的调试,无论是直接在 android studio 中还是通过命令行。

最佳答案

您需要在设备上运行 gdbserver 并让它附加到您的可执行文件

gdbserver 是用 ndk 预构建的,通常在 <ndk>/prebuilt/android-arm/gdbserver/

  1. 将 gdbserver 二进制文件复制到您的设备,例如复制到 /data/local/tmp并使用 chmod 赋予它可执行权限

  2. 如果您的可执行文件已经在运行,找到它的 PIDps命令并将 gdb 附加到它:

    gdbserver :5039 --attach <PID>

注意5039是gdb调试时常用的端口号,你可以用自己的端口号

  1. 设置从设备到电脑的端口转发

    adb forward tcp:5039 tcp:5039

  2. 在本地运行gdb,注意你还需要ndk自带的arm targeted gdb,一般在

    <ndk>toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gdb

  3. 将 gdb 附加到您的进程

    target remote :5039

从这里开始,您需要使用符合调试预期的 gdb 命令(设置断点、加载符号、逐步执行等),例如使用 cheatsheet或在评论中提问

关于android - 如何调试未直接集成到 APK 应用程序中的 android native 可执行文件和库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40492315/

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