L'exécution de ndk-gdb avec package ne trouve pas d'erreur sur le téléphone motorola

J'ai un C++ d'une application Android que je suis en train de déboguer avec ndk-gdb. L'application utilise plusieurs threads, mais les soi-disant r5 de la ndk prend en charge plusieurs threads. Aussi, je ne suis même pas arrivé à un point où gdb démarre. Je lance la commande:

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

Il trouve alors le chemin d'accès correct pour le ndk et kit de développement logiciel (ou au moins de la bad), et le besoin de ABIs et autres joyeusetés.

$ 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

Il cherche alors gdb serveur, et le trouve, y compris la bonne PID, suivi par le démarrage de l'activité.

Mais ensuite, il me dit que le colis ne peut être trouvé:

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: /home/leif/eclipse/android-sdk-linux_86/platform-tools/adb forward tcp:5039 localfilesystem:run-as: Package '<package name>' is unknown/debug-socket

Puis il crache ce que vous pourriez obtenir si vous avez mal utiliser adb (le fichier d'aide), suivie par:

ERROR: Could not setup network redirection to gdbserver?
       Maybe using --port=<port> to use a different TCP port might help?
run-as: Package '<package name>' is unknown

J'ai regardé dans /data/system/packages.liste, et oui, mon apk est très certainement là-bas, et l'emplacement de l'indiquer, c'est correct sur le système de fichiers. Ce n'est donc pas le problème.

Ce tutoriel: http://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/ recommande de supprimer et de réinstaller, ainsi que le nettoyage de votre eclipse construire.

Je n'ai pas utiliser eclipse pour construire le paquet, mais je n'ai nettoyer tout et compiler à partir de zéro, supprimé et réinstallé à pas de chance.

Quelqu'un a eu des problèmes similaires, et comment les avez-vous résolues? Merci.

Edit: Oh, et j'ai essayé un autre port en vain, il ne semble pas être quelque chose sur 5039 (le port par défaut) de toute façon. Et autant que je sache, je n'ai pas de pare-feu bloquant la connexion. Je suis en développement sur Ubuntu 11.04.

Edit2: Hmm...ça ressemble à la nouvelle ndk (r5c), le message d'erreur a changé:

ERROR: Could not extract package's data directory. Are you sure that
       your installed application is debuggable?

Et oui, debuggable est définie sur true dans le manifeste, et tout le code natif est construit avec:

LOCAL_CFLAGS           := -Wall -g
LOCAL_LDFLAGS          := -Wl,-Map,xxx.map
N' '$ adb shell run-net.leifandersen.mobile.android.marblemachine ls de travail?
Nope, j'obtiens: exécution: Package net.leifandersen.mobile.android.marblemachine " est inconnue, aussi, il semble qu'il y est un rapport de bug pour ce genre de chose, mais le paquet n'est pas trois niveaux de profondeur: code.google.com/p/android/issues/detail?id=13965. Aussi, comme je l'ai dit, le paquet est toujours répertorié dans /data/system/packages.liste.

OriginalL'auteur Leif Andersen | 2011-05-28