使用r9进行NDK调试可以在W7/64上运行但是在XP中给我带来了问题

Chr*_*aou 9 android-ndk gdbserver ndk-gdb

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

到目前为止,我已经拥有了以前的版本,在我的两个系统中都可以正常运行和调试Eclipse,XP和W7/64.

现在,在新工具安装和所需路径环境发生变化后,带有新工具的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

使用ADB标志:

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

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

找到包名:myndkpackage

申请目标ABIs:armeabi-v7a

设备API级别:17

设备CPU ABIs:armeabi-v7a armeabi

兼容设备ABI:armeabi-v7a

使用gdb setup init:./ libs/armeabi-v7a/gdb.setup

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

使用app out目录:./ obj/local/armeabi-v7a

找到debuggable标志: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 shell sleep 2

发现运行PID:2787

杀死现有的调试会话

命令:adb_cmd shell kill -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 socket socket-socket上听

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

599 KB/s(9588字节,0.015秒)

从设备/模拟器中拉出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.390s内297608字节)

从设备/模拟器中拉出libc.so.

设置JDB连接

命令:adb_cmd forward tcp:65534 jdwp:2787

java.io.IOException:handshake失败 - 连接prematurally关闭

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

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

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

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

at 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:line 742:4636分段错误$ GDBCLIENT -x native_path $GDBSETUP

大段引用

Chr*_*aou 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

工具,这次正确。

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

克里斯托斯