首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android调试ndk-gdb

Android调试ndk-gdb
EN

Stack Overflow用户
提问于 2014-09-20 01:03:44
回答 2查看 5.9K关注 0票数 5

我已经与此斗争了几天,我已经接近了,但仍然没有运气。我正在尝试通过ndk-build NDK_DEBUG=1构建一个android应用程序,它工作得很好。我可以从eclipse启动并运行它,但我想从命令行进行调试。因此,我尝试了ndk-gdb的不同方法,但都没有成功。我尝试过"ndk-gdb --start --nowait --verbose","ndk-gdb --start --verbose","ndk-debug“似乎什么都不起作用。如果我去掉'no-wait‘标志,我得到的输出略有不同,但是同样的错误会弹出……

如果没有no-wait标志:

代码语言:javascript
复制
Claudias-MacBook-Pro:Android claudia$ ndk-gdb --start --verbose
Android NDK installation path: /Applications/Intel/INDE/Framework/NDK
Using default adb command: /Applications/Intel/INDE/Framework/ADT/sdk/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.31
Using ADB flags: 
Using JDB command: /usr/bin/jdb
Using auto-detected project path: .
Found package name: com.yourcompany.neckrowfish
ABIs targetted by application: armeabi armeabi-v7a
Device API Level: 19
Device CPU ABIs: x86 armeabi-v7a
Compatible device ABI: armeabi-v7a
Using gdb setup init: ./libs/armeabi-v7a/gdb.setup
Using toolchain prefix: /Applications/Intel/INDE/Framework/NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi-v7a
Found debuggable flag: true
Found data directory: '/data/data/com.yourcompany.neckrowfish'
Found device gdbserver: /data/data/com.yourcompany.neckrowfish/lib/gdbserver
Found first launchable activity: .neckrowfish
Launching activity: com.yourcompany.neckrowfish/.neckrowfish
## COMMAND: adb_cmd shell am start -D -n com.yourcompany.neckrowfish/.neckrowfish
Starting: Intent { cmp=com.yourcompany.neckrowfish/.neckrowfish }
## COMMAND: adb_cmd shell sleep 2
Found running PID: 17094
Launched gdbserver succesfully.
Setup network redirection
## COMMAND: adb_cmd forward tcp:5039 localfilesystem:/data/data/com.yourcompany.neckrowfish/debug-socket
## COMMAND: adb_cmd shell run-as com.yourcompany.neckrowfish /data/data/com.yourcompany.neckrowfish/lib/gdbserver +debug-socket --attach 17094
## COMMAND: adb_cmd pull /system/bin/app_process ./obj/local/armeabi-v7a/app_process
Cannot attach to lwp 17094: Function not implemented (38)

Exiting
2859 KB/s (12780 bytes in 0.004s)
Pulled app_process from device/emulator.
## COMMAND: adb_cmd pull /system/bin/linker ./obj/local/armeabi-v7a/linker
5510 KB/s (183465 bytes in 0.032s)
Pulled linker from device/emulator.
## COMMAND: adb_cmd pull /system/lib/libc.so ./obj/local/armeabi-v7a/libc.so
3730 KB/s (824333 bytes in 0.215s)
Pulled libc.so from device/emulator.
Setup JDB connection
## COMMAND: adb_cmd forward tcp:65534 jdwp:17094
java.io.IOException: handshake failed - connection prematurally closed
    at com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:118)
    at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:214)
    at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:98)
    at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:72)
    at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:358)
    at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:168)
    at com.sun.tools.example.debug.tty.Env.init(Env.java:64)
    at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010)

Fatal error:
Unable to attach to target VM.
GNU gdb (GDB) 7.3.1-gg2
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-apple-darwin --target=arm-linux-android".
For bug reporting instructions, please see:
<http://source.android.com/source/report-bugs.html>.
./obj/local/armeabi-v7a/gdb.setup:4: Error in sourced command file:
Remote connection closed
(gdb) 

这会在我的android设备上引起一个“等待调试器”的通知,所以我得到了一个标志:

代码语言:javascript
复制
Claudias-MacBook-Pro:Android claudia$ ndk-gdb --start --nowait --verbose
Android NDK installation path: /Applications/Intel/INDE/Framework/NDK
Using default adb command: /Applications/Intel/INDE/Framework/ADT/sdk/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.31
Using ADB flags: 
Using JDB command: /usr/bin/jdb
Using auto-detected project path: .
Found package name: com.yourcompany.neckrowfish
ABIs targetted by application: armeabi armeabi-v7a
Device API Level: 19
Device CPU ABIs: x86 armeabi-v7a
Compatible device ABI: armeabi-v7a
Using gdb setup init: ./libs/armeabi-v7a/gdb.setup
Using toolchain prefix: /Applications/Intel/INDE/Framework/NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi-v7a
Found debuggable flag: true
Found data directory: '/data/data/com.yourcompany.neckrowfish'
Found device gdbserver: /data/data/com.yourcompany.neckrowfish/lib/gdbserver
Found first launchable activity: .neckrowfish
Launching activity: com.yourcompany.neckrowfish/.neckrowfish
## COMMAND: adb_cmd shell am start -n com.yourcompany.neckrowfish/.neckrowfish
Starting: Intent { cmp=com.yourcompany.neckrowfish/.neckrowfish }
Warning: Activity not started, its current task has been brought to the front
## COMMAND: adb_cmd shell sleep 2
Found running PID: 17094
Launched gdbserver succesfully.
Setup network redirection
## COMMAND: adb_cmd forward tcp:5039 localfilesystem:/data/data/com.yourcompany.neckrowfish/debug-socket
## COMMAND: adb_cmd shell run-as com.yourcompany.neckrowfish /data/data/com.yourcompany.neckrowfish/lib/gdbserver +debug-socket --attach 17094
## COMMAND: adb_cmd pull /system/bin/app_process ./obj/local/armeabi-v7a/app_process
Cannot attach to lwp 17094: Function not implemented (38)

Exiting
2539 KB/s (12780 bytes in 0.004s)
Pulled app_process from device/emulator.
## COMMAND: adb_cmd pull /system/bin/linker ./obj/local/armeabi-v7a/linker
4498 KB/s (183465 bytes in 0.039s)
Pulled linker from device/emulator.
## COMMAND: adb_cmd pull /system/lib/libc.so ./obj/local/armeabi-v7a/libc.so
2676 KB/s (824333 bytes in 0.300s)
Pulled libc.so from device/emulator.
GNU gdb (GDB) 7.3.1-gg2
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-apple-darwin --target=arm-linux-android".
For bug reporting instructions, please see:
<http://source.android.com/source/report-bugs.html>.
./obj/local/armeabi-v7a/gdb.setup:4: Error in sourced command file:
Remote connection closed
(gdb) 

有谁知道我的问题是什么吗?谢谢你!!

EN

回答 2

Stack Overflow用户

发布于 2014-11-03 23:31:01

Try - ndk-gdb.py

这个问题似乎相当普遍。我的解决方案是不使用提供的ndk-gdb bash脚本。在任何情况下,bash脚本都不适用于我,而python版本适用。

python版本可能包含在最新版本的NDK中,但是如果没有,您可以从NDK sourcemaster分支获取它。

您可以在以下位置克隆它:

代码语言:javascript
复制
git clone https://android.googlesource.com/platform/ndk

拉出ndk-gdb.py文件并将其放在NDK文件夹中。由于我在撰写本文时使用brew安装了NDK,r10c,NDK在/usr/local/opt/android-ndk中。

  1. 使用调试标志调用ndk-build

ndk-build clean all NDK_DEBUG=1

  • Reinstall应用。

  • 使用gdb启动它。

ndk-gdb.py --start --verbose --project=/dir/with/android/xml

如果Eclipse是打开的,您应该会注意到调试器已经启动。

票数 3
EN

Stack Overflow用户

发布于 2015-02-05 21:48:32

您可以尝试:

代码语言:javascript
复制
ndk-gdb --start --verbose --force --nowait

对我来说很管用

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25939004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档