9

我最近加载了新的 Android 开发工具 SDK 20130717 和 NDK r9。

到目前为止,我在我的两个系统(XP 和 W7/64)上都可以在 Eclipse 中工作和调试以前的版本。

现在,带有新工具的 W7/64 在新工具安装和所需路径环境更改后可以正常工作并调试我的应用程序。

当我选择“Debug As”+“Android Native Application”时它工作正常。

然而,XP,虽然它们在文件夹/cygwin 等方面具有确切的配置,但在安装新工具并更改必要的路径 env 之后,它看起来无法启动 ndk-dbg 并且它; 最终陷入等待在“启动 MyApp(1): (100%)”。这发生在我选择“Debug As”+“Android Native Application”之后。

关于可能是什么原因的任何提示?还是我错过了关于 XP 和 r9 调试的任何已知问题?

谢谢,克里斯托斯

*编辑

尝试手动启动ndk-gdb,这就是我得到的,欢迎任何提示

块引用

$ ndk-gdb --start --verbose --force

Android NDK安装路径:/cygdrive/e/android-ndk-r9

使用默认 adb 命令:/cygdrive/e/adt-bundle-windows-x86-20130717/sdk/platform-tools/adb

找到 ADB 版本:Android Debug Bridge 版本 1.0.31

使用亚行标志:

使用 JDB 命令:/cygdrive/e/Android/Java/jdk1.7.0_21/bin/jdb

使用自动检测的项目路径:.

找到的包名:myndkpackage

应用程序针对的 ABI:armeabi-v7a

设备 API 级别:17

设备 CPU ABI:armeabi-v7a armeabi

兼容设备 ABI:armeabi-v7a

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

使用工具链前缀:/cygdrive/e/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-

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

找到可调试标志:true

找到设备 gdbserver:/data/data/myndkpackage/lib/gdbserver

找到数据目录:'/data/data/myndkpackage'

找到第一个可启动的活动:myndkpackage.MainActivity

启动活动:myndkpackage/myndkpackage.MainActivity

命令: adb_cmd shell am start -D -n myndkpackage/myndkpackage.MainActivity

开始:意图 { cmp=myndkpackage/.MainActivity }

命令:adb_cmd 外壳睡眠 2

发现运行PID:2787

杀死现有的调试会话

命令: adb_cmd 外壳杀死 -9 2753

成功启动 gdbserver。

设置网络重定向

命令:adb_cmd shell run-as myndkpackage lib/gdbserver +debug-socket --attach 2787

命令:adb_cmd forward tcp:5039 localfilesystem:/data/data/myndkpackage/debug-socket

随附的; PID = 2787

监听 Unix 套接字调试套接字

命令: adb_cmd pull /system/bin/app_process obj/local/armeabi-v7a/app_process

599 KB/s(0.015 秒内 9588 个字节)

从设备/模拟器中提取 app_process。

命令: adb_cmd pull /system/bin/linker obj/local/armeabi-v7a/linker

658 KB/s(0.093s 内 63244 字节)

从设备/模拟器中提取链接器。

命令: adb_cmd pull /system/lib/libc.so obj/local/armeabi-v7a/libc.so

744 KB/s(0.390 秒内 297608 字节)

从设备/模拟器中提取 libc.so。

设置 JDB 连接

命令:adb_cmd 转发 tcp:65534 jdwp:2787

java.io.IOException:握手失败 - 连接提前关闭

在 com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:136)

在 com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:232)

在 com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116)

在 com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:90)

在 com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519)

在 com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328)

在 com.sun.tools.example.debug.tty.Env.init(Env.java:63)

在 com.sun.tools.example.debug.tty.TTY.main(TTY.java:1066)

致命错误:

无法附加到目标 VM。

/cygdrive/e/android-ndk-r9/ndk-gdb:第 742 行:4636 分段错误 $GDBCLIENT -xnative_path $GDBSETUP

块引用

4

3 回答 3

4

好的,

据我了解,这是新 r9 版本中的一个问题,特别是在名为

android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-gdb

这个可执行文件给出了分段错误。

所以它看起来在发行版中从一开始就没有正确生成,来自将它上传到主要 android 网站的 android 开发人员自己。

我尝试并重新下载了 r9 发行版并重新安装,但同样的事情发生了,所以这不是偶然的,例如解压缩错误。

我尝试了旧的 r8e 相同的文件,它没有给出分段错误,它工作正常。

所以,我做了一些事情来证明我所说的概念,并采用以前的版本文件(来自 r8e)并覆盖新的 r9 文件,然后再次尝试运行失败的 ndk-dbg 和..

..有用..

现在我有一个新的 r9 NDK,但有一个来自 r8e 的文件,旧的 arm-linux-androideabi-gdb.exe,一切正常!

所以我猜android开发人员必须重新编译

-> android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-gdb.exe

工具,这次是正确的。

至少我希望有人会发现这很有用,并避免我一直以来的挫败感。

克里斯托斯

于 2013-08-03T18:35:23.637 回答
3

这是在 Android NDK 上打开的错误。一种解决方法是使用arm-linux-androideabi-gdb.exeAndroid NDK r8e(如 Christos 的回答中所述),或从http://code.google.com/p/mingw-and-ndk/downloads/detail 下载固定文件?名称=arm-linux-androideabi-gdb.exe

于 2013-09-30T22:28:36.770 回答
1

仅作记录,gdb 的问题似乎已在 NDK 的 r9b 中得到修复。

https://developer.android.com/tools/sdk/ndk/index.html

修复了 Windows 32 位 *-gdb.exe 可执行文件无法启动的问题。(问题 58975 )

于 2013-11-01T03:46:34.907 回答