Android ndk 使用r9进行NDK调试可以在W7/64上运行,但在XP中会出现问题

Android ndk 使用r9进行NDK调试可以在W7/64上运行,但在XP中会出现问题,android-ndk,gdbserver,ndk-gdb,Android Ndk,Gdbserver,Ndk Gdb,我最近加载了新的Android开发工具SDK 20130717和NDK r9 到目前为止,我有以前的版本,在我的两个系统(XP和W7/64)上都可以在Eclipse中正常工作和调试 现在,带有新工具的W7/64可以正常工作,并且在新工具安装和所需路径环境更改后可以调试我的应用程序 当我选择“调试为”+“Android本机应用程序”时,它工作正常 然而,XP虽然在文件夹/cygwin等方面有精确的配置,但在安装了新工具并更改了必要的路径env之后,它似乎无法启动ndk dbg和它;在“发布MyAp

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

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

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

当我选择“调试为”+“Android本机应用程序”时,它工作正常

然而,XP虽然在文件夹/cygwin等方面有精确的配置,但在安装了新工具并更改了必要的路径env之后,它似乎无法启动ndk dbg和它;在“发布MyApp(1):(100%)的时候,他一直在等待。 这发生在我选择“Debug As”+“Android原生应用程序”之后

有什么线索可以说明原因吗?或 在XP和r9调试中是否有任何已知的问题我没有注意到

谢谢, 克里斯托斯

*编辑

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

大宗报价

$ndk gdb--开始--详细--强制

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

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

找到ADB版本:Android调试桥版本1.0.31

使用ADB标志:

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

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

找到的包名称:myndkpackage

应用目标ABI: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/toolschains/arm-linux-androideabi-4.6/prebuild/windows/bin/arm-linux-androideabi-

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

找到可调试标志:true

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

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

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

启动活动:myndkpackage/myndkpackage.main活动

命令:adb_cmd shell am start-D-n myndkpackage/myndkpackage.main活动

开始:Intent{cmp=myndkpackage/.MainActivity}

命令:adb_cmd shell sleep 2

发现正在运行PID:2787

正在终止现有调试会话

命令:adb_cmd shell kill-9 2753

已成功启动gdbserver

设置网络重定向

命令:adb_cmd shell作为myndkpackage lib/gdbserver+debug套接字运行--附加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字节)

从设备/模拟器中拉取应用程序进程

命令: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

744kb/s(0.390s中的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.genericatachingconnector.attach(genericatachingconnector.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-x
native\u路径$GDBSETUP

大宗报价

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

android-ndk-r9/toolchains/arm-linux-AndroidABI-4.6/prebuild/windows/bin/arm-linux-AndroidABI-gdb

此可执行文件给出分段错误

因此,在发行版中,它似乎从一开始就没有被正确生成,是由安卓开发者自己在安卓主站点上传的

我试着重新下载了r9发行版并重新安装,但同样的事情发生了,所以这不是偶然的,比如解压不好

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

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

…它起作用了

现在我有了一个新的R9NDK,但是有一个来自r8e的文件,旧的arm-linux-androideabi-gdb.exe,一切都很好

所以我想android开发者必须重新编译

->android-ndk-r9/toolschains/arm-linux-androideabi-4.6/prebuild/windows/bin/arm-linux-androideabi-gdb.exe

工具,这次正确

至少我希望有人会觉得这很有用,避免我一直以来的沮丧

Christos是在Android NDK上打开的。解决方法是使用Android NDK r8e中的
arm linux AndroidAbi gdb.exe
(如Christos的回答所述),或下载修复程序