我无法为运行Jellybean 4.2.2的Galaxy S4运行run-as(或ndk-gdb).
~ $ adb shell
shell@android:/ $ run-as a.b.c ls
run-as: Package 'a.b.c' is unknown
Run Code Online (Sandbox Code Playgroud)
对于pre-ICS设备,这个问题有多个答案,但这些答案似乎已在ICS中得到修复.
更新 - 2013年8月:在最初出现在带有Jellybean 4.2.2的Galaxy S4之后,现在似乎是所有4.3设备上的运行问题.看到这个Android bug.
请在此处查看已确认的Android问题.
更新 - 2013年11月:谷歌发布了修复Android 4.4中运行的修补程序.
我有一个C++ Android应用程序,我正在尝试使用ndk-gdb进行调试.应用程序确实使用多个线程,但据推测,ndk的r5支持多个线程.此外,我甚至没有达到gdb启动的程度.我运行命令:
ndk-gdb --start --force --verbose
Run Code Online (Sandbox Code Playgroud)
然后它找到ndk和sdk(或至少adb)的正确路径,以及所需的ABI和诸如此类的东西.
$ ndk-gdb --start --force --verbose
Android NDK installation path: /home/leif/eclipse/android-ndk-r5b
Using default adb command: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.26
Using final ADB command: '/home/leif/eclipse/android-sdk-linux_86/platform-tools/adb'
Using auto-detected project path: .
Found package name: net.leifandersen.mobile.android.marblemachine
ABIs targetted by application: armeabi
Device API Level: 10
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Run Code Online (Sandbox Code Playgroud)
然后它查找gdb服务器,并找到它,包括正确的PID,然后启动活动.
但是,它告诉我无法找到包:
Setup network redirection
## COMMAND: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb shell run-as <package name> lib/gdbserver +debug-socket --attach 16040
## COMMAND: …Run Code Online (Sandbox Code Playgroud)