Comment déboguer une Application sur Android avec GDBSERVER?
Je suis en train de déboguer un natif de la bibliothèque partagée que mon Application, par l'intermédiaire de JNI. Je peux joindre à une application en cours d'exécution très bien avec "gdbserver-joindre pid" mais j'ai besoin de lancer mon application quand je lance le gdbserver commande.
Il y a un million de blog hits sur ce sujet, mais aucun d'entre eux semblent être clair sur la façon dont vous lancez votre application. Ils disent tous à "gdbserver 10.0.2.2:1234 ./MyProgram" mais qu'est-ce exactement "MyProgram". C'est que MyProgram.apk? Est-il MyProgram.de la sorte? Est-il un autre fichier qui est créé lors de l'installation de l'application? Si oui, quel est son parcours?
OriginalL'auteur cjserio | 2010-01-13
Vous devez vous connecter pour publier un commentaire.
Alors qu'il est possible de développer permanent gratuit applications qui peuvent être lancées directement depuis le shell, comme d'autres le décrivent, il semble que votre code s'exécute dans le cadre de l'application Android. Par conséquent, vous n'avez pas un fichier exécutable et au lieu d'avoir un APK qui contient votre Dalvik fichiers de classe ainsi que d'autres ressources, y compris votre propre objet partagé.
Le lancement d'une application dans un APK implique plusieurs étapes
Alors que vous ne pouvez pas lancer un APK directement par le passage d'un exécutable à gdbserver, son assez facile de déclencher un lancement de la coquille à l'aide de la
am
commande.Une fois que votre demande est en cours d'exécution, utilisez
gdbserver --attach <pid>
comme vous avez avant. Si vous êtes chanceux, votre application attend une intervention de l'utilisateur avant d'appeler votre code natif pour vous donner une chance à fixer et à l'ensemble de vos points d'arrêt dans GDB.OriginalL'auteur Tim Kryger
Google fournit un officiel de la solution à votre problème: 'ndk-gdb'
Il est inclus dans le NDK. Autant que je me souvienne, il exige que vous ayez une copie de gdbserver regroupés à l'intérieur de votre APK; IIRC, cela se fera automatiquement si vous avez construit votre APK avec "ndk-build", et précise les arguments appropriés.
Reportez-vous à Google de documentation dans $NDK/docs/NDK-BUILD.html et $NDK/docs/NDK-GDB.html
</ryan>
OriginalL'auteur Ryan V. Bissell