问题标签 [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 回答
630 浏览

android - 交叉调试android ndk时符号不同步

我正在尝试使用 adb shell、一侧的 gdbserver 和另一侧的 ndk 的 gdb 来调试本机构建的(NDK)可执行测试(+共享库)。

我将可执行文件和 .so 复制到设备并在 adb shell 中执行:

在主机上,我在同一个 my_test 可执行文件上运行 gdb:

并在 main() 中设置断点:

当连接到 Eclipse 作为远程调试时,当我尝试逐步执行代码时,“下一条语句”会跳转到代码中的不同位置。这与我在 gdb 中执行一系列“下一步”命令时看到的相同。

设备上的 gdbserver 版本为 7.6。

有任何想法吗?

更新:

在构建 gdb 7.6.2 并使用它而不是我拥有的 NDK 版本(r9d 64 位)附带的 gdb 7.3.1-gg 之后,那些内部错误的警告消息消失了。

剩下的就是代码和调试之间缺乏同步。我使用 NDK_DEBUG=1 构建代码并将可执行文件和 .so 从 .obj 目录复制到设备,但是当我从 gdb+gdbserver 进行“逐步”调试时,从 gdb 看到的程序流程没有有任何意义。

0 投票
2 回答
5879 浏览

android - 安卓调试ndk-gdb

我已经为此奋斗了好几天,我已经接近了,但仍然没有运气。我正在尝试通过 ndk-build NDK_DEBUG=1 构建一个 android 应用程序,它工作得很好。我可以从 Eclipse 启动并运行它,但我想从命令行进行调试。所以我用 ndk-gdb 尝试了不同的方法,但没有运气。我已经尝试过“ndk-gdb --start --nowait --verbose”、“ndk-gdb --start --verbose”、“ndk-debug”,但似乎没有任何效果。如果我去掉“no-wait”标志,我会得到一个稍微不同的输出,但是会弹出相同的错误......

没有 no-wait 标志:

这会在我的 android 设备上导致“等待调试器”通知,所以我得到的标志是:

有谁知道我的问题可能是什么?谢谢!!

0 投票
1 回答
451 浏览

android - 无法使用 GDB 和 Eclipse 调试 NDK 的 c++ 代码(操作系统 - Windows 7)

当我尝试调试 hello-neon 示例应用程序时。但是当按 F11(调试)时,我看到下面的错误(但应用程序启动并运行):

警告:解析目标描述时(第 1 行):目标描述指定未知架构“i386”警告:无法加载 XML 目标描述;忽略无法 AssignProcessToObject

评论:我正在使用 Item Atom 电话。

如何解决?

0 投票
1 回答
942 浏览

android - 调试本机应用程序时出现 Gdbserver 奇怪错误

我正在尝试在我的 android 设备上调试本机应用程序。我遵循了本教程:http ://blog.thecobraden.com/2012/02/debugging-apps-with-native-code-part-1_09.html 一切顺利,我构建了应用程序并安装了它,一旦我想要使用 ndk-gdb 对其进行调试时出现此错误:无法打开远程设备:参数无效。

我搜索了这个错误,找到了这个答案:Android NDK调试:无法打开设备这和我的问题很相似,我尝试了这个方法,现在我得到这个错误:无法打开套接字:权限被拒绝。

我的手机已植根,所以我不明白为什么 gdbserver 无法打开套接字。我试图为 gdbserver 二进制文件提供不同的权限,但它仍然无法正常工作。有什么解决办法吗?

0 投票
0 回答
335 浏览

c++ - ndk-gdb 与 Android Studio

我以前能够使用 eclipse 来构建一个带有 ndk-build 的 android 应用程序,并且我能够使用 ndk-gdb 进行调试。当我对使用 Android Studio 构建的应用程序执行相同操作时,我收到此错误:

我在 build.gradle 中设置了 jniDebuggable=true:

我在这里错过了什么吗?

注意:我已经在三星 S3、Moto-g 第二代上进行了测试。我尝试使用 r9d、10c 和 10d。

0 投票
1 回答
283 浏览

android - 带有 gradle 风格的 ndk-gdb

在我的 android 项目中,我有一个带有默认包名称的默认风格,例如:

在我的中,build.gradle我添加了另一种具有不同包名的风味:

将 APK 安装到我的设备后,我想附加ndk-gdb,但我遇到了这样的问题:

  1. 如果我安装com.my.default一切都很好。
  2. 如果我安装 . com.my.another,则失败,因为它ndk-gdb正在寻找.com.my.defaultAndroidManifest.xml
  3. 如果我将包名称更改AndroidManifest.xmlcom.my.another手动然后ndk-gdb工作。

我的问题是:有什么方法可以ndk-debug用来调试风味生成的 APK 而无需更改AndroidManifest.xml?

0 投票
0 回答
230 浏览

android - 让 ndk-gdb 工作:您的 APP_BUILD_SCRIPT 指向一个未知文件:Android.mk

关于这个有几个问题,我已经尝试了几个解决方案,但我仍然收到上述错误。

我的项目根是

我的 jni 文件夹是

Android.mk 在这里

Application.mk 在这里

这是我的 ndk 日志结束的地方:

我没有在我的 Application.mk 中定义 APP_BUILD_SCRIPT,但是我在我的 .bash_profile 中定义了 NDK_PROJECT_ROOT 环境变量以指向模块目录(即:jni 目录的父目录)。

有任何想法吗?

0 投票
1 回答
364 浏览

ant - ant debug 未能在 apk 文件中包含 gdb.setup

很长一段时间以来,我一直在(从 mac 终端)成功构建这个本机应用程序,但今天我遇到了一个我似乎无法确定的错误。在厌倦了所有 javac 警告后,我升级到了更新版本的 ant。我不确定它是否相关,但时间是可疑的。我仍然可以构建、部署和运行我的应用程序,但现在我不能再使用 ndk-gdb 来调试应用程序的本机部分。经检查,gdb.setup 文件未添加到调试 apk 中。

这是构建顺序、缩写输出和信息。我正在寻找有关如何解决该问题的建议。

我已经对 NDK 和 ant 构建进行了全面清理

android NDK 版本和 android SDK 版本都是最新的。我使用内置的 ndk-bundle 加载了 android studio sdk 工具。

我们开发的设备没有植根,也不是一种选择。

hsmith$ java -version java 版本“1.8.0_45”

Java(TM) SE 运行时环境(构建 1.8.0_45-b14) Java HotSpot(TM) 64 位服务器 VM(构建 25.45-b02,混合模式)

hsmith$$ANT_HOME

-bash: /Users/hsmith/dk/ant/apache-ant-1.9.6: 是一个目录

hsmith$ ndk-build -j4 NDK_DEBUG=1

[armebi-v7a] Gdbserver : [arm-linux-androideabi-4.8] libs//gdbserver

[armebi-v7a] Gdbsetup : libs//gdb.setup

[armebi-v7a] 安装:lib1.so => libs/armebi-v7a/lib1.so

[armebi-v7a] 安装:lib2.so => libs/armebi-v7a/lib2.so

[armebi-v7a] 安装:lib3.so => libs/armebi-v7a/lib3.so

hsmith$ ant debug ... -package: [apkbuilder] 找到修改后的输入文件

[apkbuilder] 创建 -debug-unaligned.apk 并使用调试密钥对其进行签名...

-后包装:

-做调试:

[zipalign] 在最终的 apk 上运行 zip align...

[propertyfile] 更新属性文件:/Users/hsmith/packageFolder/bin/build.prop

[propertyfile] 更新属性文件:/Users/hsmith/packageFolder/bin/build.prop

[propertyfile] 更新属性文件:/Users/hsmith/packageFolder/bin/build.prop

[propertyfile] 更新属性文件:/Users/hsmith/packageFolder/bin/build.prop

-构建后:

调试:

构建成功

hsmith$ adb install -r ~/packageFolder/bin/-debug.apk

hsmith$ ndk-gdb adb --start

错误:包不可调试!您可以通过两种方式解决此问题:

  • 调用 'ndk-build' 时使用 NDK_DEBUG=1 选项重建。

  • 修改清单以将 android:debuggable 属性设置为“true”,

    然后正常重建。

在其中之一之后,重新安装到设备上!

我解压apk文件找到

解压后的apk文件/lib/target/

hsmith$ ls -la

总计 48264

drwxr-xr-x 12 hsmith 员工 408 8 月 25 日 14:50。

drwxr-xr-x 5 hsmith 员工 170 8 月 25 日 14:50 ..

-rwxr-xr-x 1 hsmith 员工 409940 Jun 3 11:47 gdbserver

-rwxr-xr-x 1 hsmith 员工 33920 8 月 25 日 14:44 lib1.so

-rwxr-xr-x 1 hsmith 员工 165092 8 月 25 日 14:44 lib2.so

-rwxr-xr-x 1 hsmith 员工 1614028 8 月 25 日 14:44 lib3.so

注意没有 gdb.setup 文件

我不在清单中使用 debuggable=true ,因为不再需要它,但是包括它对结果没有影响。

更新: https ://code.google.com/p/android/issues/detail?id=183455 这正是我遇到的问题。如果将目标 gdb.setup 文件从目标目录复制到 ./lib 目录,则可以使 ndk-gdb 工作;ndk-gdb 中的 COMPAT_ABI 变量设置不正确,并将脚本发送到旋转中。我希望他们尽快解决这个问题。几乎三天的时间都浪费在了一条损坏的工具链上。

0 投票
1 回答
351 浏览

android - 如何在 chrome ARC 中将 gdb 附加到 android 模拟器

我需要附加 gdb 以在 chrome ARC 中调试我的 android 应用程序。加载 adb 插件后,我可以看到“adb devices”中列出的设备,但是我无法在此模拟器上启动 gdb 服务器。无法检测到 ARC 模拟器的 Android Studio 也会发生同样的情况。有没有一种简单的方法可以在 ARC 中为 java 和本机端代码调试 android 应用程序?到目前为止,我主要依赖于 logcat 跟踪,但由于应用程序的复杂性,完全依赖 logcat 跟踪变得越来越困难。

0 投票
2 回答
1292 浏览

android - ndk-gdb 找不到 gdb.setup 但它在 x86 下

Mac 上的 Cocos2d-x 3.7.1 + ndk r10e 项目尝试在 Eclipse 中调试。日子一天天过去,错误不断出现......

我可以从 proj.android 的终端使用 cocos compile 和 -p android -m debug --ndk-mode NDK_DEBUG=1 来构建和运行 cocos。

我的应用程序在我的 x86 模拟器上运行正常(最终)没问题。

从 ./proj.android 在终端中键入“ndk-gdb”,我得到了错误

错误:在 ./libs/ 下找不到 gdb.setup

但是文件 gdb.setup(和 gdbserver 和 libcocos2dcpp.so)可以在 ./proj.android/libs/x86 中看到!?

我的 AndroidManifest.xml 包括 android:debuggable="true"

我的 jni/Application.mk 包括 APP_ABI := x86(仅限)

如果有人能告诉我如何诊断或解决这个问题,那么我想我欠他们一杯啤酒(顺便说一句,约克郡)

更新: 我尝试使用 --verbose 标志运行 GDB。输出显示

使用 gdb 设置初始化:./libs/armeabi/gdb.setup

使用应用程序输出目录:./obj/local/armeabi

猜猜我需要在某处更改设置/初始化文件?