问题标签 [ndk-gdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
487 浏览

android - 无法使用 ndk-gdb

当我在 cgywin 中运行 ndk-gdb 时,我收到错误消息“make: command not found”和“设备不支持以 CPU abi 为目标的应用程序”

安卓.mk

应用程序.mk

我正在使用安装了 2.3.3 的 kindle fire

0 投票
1 回答
1871 浏览

c++ - Android 调试原生代码

我正在使用 ndk-r9,我正在努力让 ndk-gdb 为我工作。我已经启动了一个名为“LittlestAndroid”的小型 android 应用程序,它对返回硬编码字符串的本机 C++ 方法进行简单调用。该应用程序构建/安装/运行得很好。现在我重新利用该应用程序来了解 ndk-gdb。我在清单中设置了 debuggable="true" 。我在我的 make 中设置了这些环境变量:

我已经破解了 $NDK_HOME/build/core/build-binary.mk 文件,使用以下命令有条件地去除调试符号:

当我尝试对模拟器进行调试时,我得到了这个:

退出并尝试再次附加 gdb 后(没有在模拟器上单击“强制关闭”),我得到了这个:

我错过了什么或做错了什么?在任何一种情况下,我都无法让调试器连接和/或继续执行我的应用程序。我也尝试在启动 ndk-gdb 后设置断点,但我得到以下信息:

有没有人成功运行过 ndk-gdb,如果有,你能提供指导吗?我已经到处搜索了,但除了最基本的教程外,我什么也找不到,也没有深入解释如何实际设置断点(我是像上面那样使用我的 cpp 的相对路径还是只指示文件基名?)或如何解决我看到的错误。

更新 我刚刚发现这个问题似乎表明 ndk-r9 中存在问题。我会下载一个较早的版本并试一试。

0 投票
1 回答
1090 浏览

debugging - 在 sumsung 手机上进行 Android ndk 调试

前几天我买了一部手机Sumsung s4.然后我发现我不能在手机上使用ndk调试。我有很多信息,但没有得到解决方案。问题是 Sumsung 更改了系统的一些代码。/data/system/packages.list 被“run-as”用于获取应用程序的数据目录,并在设备上启动 gdbserver。大多数三星手机已将其移至 /dbdata/system/packages.list,但未重建“run-as”以反映此更改,并引发错误。因此,ndk-gdb 脚本无法连接到这些手机。所以请帮助我!!!!

0 投票
1 回答
775 浏览

android - Android 应用程序 ABI 和本机调试

尝试在 Eclipse 中进行本地调试时,我得到“无法检测应用程序 ABI”。我没有得到任何结果,所以我尝试了 ndk-gdb(我在 Windows 上的 ndk-gdb.py)。

但是使用 ndk-gdb 给了我:

发生这种情况是因为 ndk-gdb.py 函数:

返回一个“。” 当被要求提供 APP_ABI 时。我已经转储了子进程的 make call 参数,当我从命令行执行 make 调用时,我得到了“armeabi-v7a armeabi”的正确响应

我认为这与 python 无关,因为该错误与我的 Eclipse 唯一问题非常相似。

0 投票
1 回答
648 浏览

debugging - ndk-gdb 调试无法加载符号:说无法获取线程创建断点的位置

我有一个 Android 本机代码,它由一个静态库(XXX.a)和最终的 ndk-build 命令(NDK_DEBUG 设置为 1)采用上述预构建的静态库并创建一个共享对象。

我使用 nm 命令查看特定函数定义的共享对象,它似乎可用(001ff2f5 T XXXXX)。

但是当我在运行 4.4.2 的 Android 设备上运行 ndk-gdb 时,gdb 无法加载共享对象符号:

我在 Ubuntu、ndk-r8 NDK 版本和 Android SDK 平台 android-19 上运行它。

我已经尝试了堆栈溢出中当前可用的几乎所有帖子,但似乎没有一个对我有用。我一直在尝试在静态库中存在的函数中设置断点,但没有成功。

有人可以提供有关我可能出错的地方以及如何从这里开始以使 ndk-gdb 调试工作的见解吗?

0 投票
2 回答
991 浏览

c++ - ubuntu 12.04 中 android-ndk-r9d-linux-x86 的 ndk-gdb 出错

我在 ubuntu 12.04 中使用 android-ndk-r9d-linux-x86 的 ndk-gdb 来调试 android 本机应用程序“hello-jni”,但它收到此错误。

但是 android-ndk-r8e-linux-x86 没问题,我想知道为什么?谢谢。

0 投票
1 回答
715 浏览

android - 在库项目中调试本机代码

我正在尝试调试我的 android 应用程序,该应用程序使用具有本机代码的库。我查看了这个SO question并配置了其中提到的 ndk 调试器,并且能够启动调试器,但我无法单步执行我设置的断点。在启动调试器之前,我收到了这个警告:

映射共享库部分时出错:`/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/libjpeg.so':不是可执行格式:文件格式无法识别

警告:“/home/raneez/Documents/android/workspace/SmartCardLibrary/obj/local/armeabi/libcrypto.so”的.dynamic部分不在预期的地址(错误的库或版本不匹配?)

警告:“/home/raneez/Documents/android/workspace/SmartCardLibrary/obj/local/armeabi/libssl.so”的.dynamic部分不在预期的地址(错误的库或版本不匹配?)

警告:无法加载 120 个库的共享库符号,例如 /system/bin/linker。使用“info sharedlibrary”命令查看完整列表。

你需要“set solib-search-path”还是“set sysroot”?警告:无法找到动态链接器断点函数。GDB 最终会重试。同时,GDB 很可能无法调试共享库初始化程序或在 dlopen() 之后解决挂起的断点。

[新线程13826]

[新线程13827]

[新线程13828]

[新线程13829]

[新线程13833]

[新线程 13834]

[新线程13835]

[新线程13837]

[新线程13838]

[新线程13850]

[新线程 13852]

0 投票
0 回答
116 浏览

android - Android NDK:调试 Android 本机代码时启用漂亮打印?

在调试 Android 本机代码时,如果您想查看 c++ 容器(如 std::vector)中的内容,那是相当混乱的,我知道有漂亮的打印,但是如何将它与 Android 本机代码调试集成?

0 投票
6 回答
6232 浏览

android - Gradle 不会将 gdbserver 打包到 apk 中。ndk-gdb 导致“错误:目标设备上安装了不可调试的应用程序”

在 Android Studio 0.6 中,我创建了一个带有 JNI 包装的非常简单的 C 函数的 android 测试项目。我设置android:debuggable="true"AndroidManifest.xml.

我跑了ndk-build NDK_DEBUG=1。这会在正确的位置生成一个gdbserver和一个gdb.setup文件。

在此处输入图像描述

但是,当我在 Android Studio 中构建项目并运行时,ndk-gdb --debug我得到以下输出:

我查看了生成的 apk gradle 以确保 gdbserver 在那里,但我找不到gdbserverorgdb.setup文件!他们去哪儿了??看起来 gradle 没有将它们打包在我的 apk 中!

这是我的build.gradle

如何让 gradle 正确地将 gdbserver 打包到我的 apk 中?如果你想自己尝试一下,我把完整的源码放在了 github 上。https://github.com/cypressf/testndk

0 投票
0 回答
212 浏览

android-ndk - Android NDK arm-linux-androideabi-gcc 行号信息

使用 ndk-gdb 调试本机应用程序。当我单步执行代码时,我得到以下信息。

所以,我无法调试应用程序。调试器直接单步执行,直到找到带有行号信息的函数。

我们的项目由所有核心应用程序代码构成,位于一个单独的项目中,该项目将首先编译成一个共享库(.so 文件)。然后,我们构建项目,链接共享库并生成 APK 文件。JNI 文件夹中的代码已使用行号信息构建。但是,使用 androideabi-gcc 编译成 .so 文件的单独项目中的代码没有行号信息。

编辑:忘记提及“-g -ggdb”标志已经存在于Makefile中。尽管有这些标志,但仍会出现此问题。