93 votes

Un moyen simple ou facile de déboguer le code Android NDK?

Je cherche un moyen de déboguer facilement le code C dans une application NDK Android utilisant Eclipse. J'ai lu des façons de déboguer l'application à l'aide de gdb ou quelque chose de similaire, mais ce que je veux, c'est un moyen de transmettre des messages à Eclipse.

Je cherche une solution aussi simple que d'utiliser une fonction d'impression en C et de la visualiser dans le journal DDMS ou quelque chose de similaire. Quelqu'un at-il une expérience dans ce domaine?

153voto

svdree Points 6067

Vous pouvez utiliser les fonctions de journalisation Android:

 #include <android/log.h>

#define APPNAME "MyApp"

__android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "The value of 1 + 1 is %d", 1+1);
 

Assurez-vous également de créer un lien avec la bibliothèque de journalisation, dans votre fichier Android.mk:

   LOCAL_LDLIBS := -llog
 

14voto

Shervin Emami Points 1505

Le plus simple est probablement de rediriger les instructions printf() dans le journal système (basé sur la "Visualisation stdout et stderr" section de l'officiel de la BAD manuel de référence.

Le Type de ces 3 commandes sur une ligne de commande:

adb shell stop
adb shell setprop log.redirect-stdio true
adb shell start

Ensuite, vous pouvez afficher la sortie de votre "printf()" énoncés prospectifs à la "LogCat" de la fenêtre du Débogueur Eclipse, ou en tapant cette ligne de commande:

adb logcat

Juste être conscient que les données mises en mémoire tampon avant de les transférer à partir de l'émulateur ou un périphérique, vous devez absolument rincer le stdout de la mémoire tampon, par exemple:

printf("Hello, I am %d years old!\n", 30);
fflush(stdout);

Vous devriez alors voir un message de journal en commençant par "I/stdout:"

2voto

Chris Points 2012

Une solution alternative (utilisant un débogueur) est expliquée ici:

Comment puis-je déboguer efficacement le code C encapsulé avec JNI dans Eclipse? (Dev Android)

2voto

draganstankovic Points 1948

ADT 20 comprend un NDK plugin qui offre un soutien pour la création et le débogage NDK projets dans Eclipse. Ce document décrit comment installer et utiliser le NDK plugin. Les Instructions sont assez simple et ne comportent que quelques étapes.

C'est la solution la plus simple que j'ai trouvé et il a travaillé pour moi.

Remarque: Si vous utilisez l'outil ADT bundle vous avez seulement besoin d'installer C outils de développement avec l'installation de nouveaux logiciels (voir la capture d'écran) et vous pouvez aller à "Utiliser le NDK plugin" la partie immédiatement.

c dev tools install

Edit: Il semble y avoir un problème avec le CDT dans eclipse juno http://code.google.com/p/android/issues/detail?id=33788 provoquant l'éclipse du débogueur incapables de trouver des points d'arrêt. Solution de contournement que j'ai utilisé est de démarrer l'application en mode debug (pas de débogage comme application native, mais "normal" debug) et puis en ligne de commande je suis allé à ma racine du projet et tapé ndk-gdb (ce qui crée gdb.setup fichier obj/local/armeabi le dossier). Après que les points d'arrêt travaillé comme d'habitude.

Dans les commentaires relatifs à la question sur le lien ci-dessus, ils suggèrent certains autres solutions de contournement, mais je n'ai pas essayer car il semble qu'ils exigent plus d'efforts que ça.

0voto

j2emanue Points 3456

Pour ceux que ça intéresse, je n'ai pas essayé moi-même mais ce site dit qu'il y a un moyen d'éclipse CDT ...

http://blog.sephiroth.it/2010/12/14/how-to-debug-native-code-with-android/

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