【发布时间】:2017-03-22 09:33:34
【问题描述】:
我有一个由基于 Java 的 APK、本机可执行文件和本机库组成的 android 应用程序。 apk 通过套接字与本机(根 NDK c/c++)可执行文件和库进行通信。
我不确定它是否重要,但可执行文件和库是通过 cmake 编译的,并复制为可执行文件,然后以 root 身份运行。我需要使用断点等进行某种类型的调试,无论它是直接在 android studio 中还是通过命令行。
【问题讨论】:
-
只要你有native部分的源码并且可以在debug模式下编译,你可以用最新版本的Android Studio或者命令行lldb或gdb调试它。你有没有尝试过these instructions 之类的东西?
-
我已经尝试过关注那些,但是我似乎找不到在我使用 ndk-build 时创建的 obj 目录。现在我正在使用 cmake,该目录似乎不存在。
-
我对 Android 的 cmake 用法不是特别熟悉,但这一切都归结为找到带有未剥离符号的 .so 文件,只需寻找具有相同名称的更大 .so 文件
-
所以我实际上是在尝试调试本机可执行文件,该可执行文件在应用启动时被复制并以 root 身份运行。该库被使用,所有通信都通过套接字完成。我已经添加了 .so 文件的路径,并按照您发布的链接中的所有步骤进行操作,但仍然无法使其中断。
-
Android Studio 能够附加和运行 java 应用程序 + 调试。所以他们使用。我不确定是否可以轻松地使用它来调试独立的非 Java 应用程序。你需要让它附加到设备上运行的 gdbserver,我可以给你说明如何进行命令行调试
标签: android c++ android-studio android-ndk native-executable