5 votes

Comment déboguer une bibliothèque partagée [ projet séparé] à partir d'une application Android ?

Je développe une application Android et j'utilise un code c++ intensif dans le projet, Tout d'abord, j'ai mis le code source c++ dans le projet et j'ai utilisé le guide suivant pour avoir la capacité NDK de débogage natif dans l'application Android.

http://tools.Android.com/recent/usingthendkplugin

Mais après quelques semaines de développement, j'ai décidé de séparer le code natif dans un projet autonome et d'utiliser la sortie SO dans l'application Android.

Ma question est la suivante : comment puis-je déboguer une bibliothèque SO qui est le résultat d'un projet séparé dans une application Android ?

1voto

Ryan V. Bissell Points 447

Utilisez nkd-gdb pour cela (votre fichier .so devra être inclus dans l'APK que vous avez installé pour votre application, à l'emplacement normal des fichiers .so spécifiques à l'application) Il fait partie du NDK. Voir $NDK/docs/NDK-GDB.html

Mais attention : nkd-gdb n'attachera GDB à votre fichier .so qu'après le démarrage de l'application. Vous risquez donc de manquer certains points d'arrêt. Je connais 2 façons de résoudre ce problème, en dehors d'un plugin IDE :

  1. Placez une boucle infinie au premier point d'entrée de votre .so, puis utilisez GDB pour sortir de cette boucle infinie, après avoir placé vos points d'arrêt.
  2. Téléchargez ma mise à jour en cours de ndk-gdb, qui corrige ce problème, à l'adresse suivante https://Android-review.googlesource.com/#/c/48029/ (Une personne a rapporté avoir eu des problèmes avec mon correctif, donc il n'est pas encore approuvé pour AOSP... mais je n'ai jamais reproduit son problème. N'hésitez pas à me faire savoir si vous l'utilisez, et si cela fonctionne pour vous ou non).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X