2010-12-11 11 views
0

Je développe une application Android avec du code natif. Je ne sais pas comment déboguer une bibliothèque partagée, j'ai donc décidé de consigner des valeurs à partir d'un pointeur vers LogCat.Valeurs du pointeur de consignation sur le code natif Android

I ont le code C++:

extern GLfloat* vertPos; 

// More code here: 
... 

int i = 0; 
for(i = 0; i < numVertices; i++) 
{ 
     __android_log_print(ANDROID_LOG_VERBOSE, "initRendering-Vertices", "%d, %f", i, vertPos[i]); 
} 

numVertices est égale à 2472 éléments.

Je reçois quelque chose comme ça à LogCat:

12-11 08:17:35.354: VERBOSE/initRendering-Vertices(900): i = 614, value = 3.246999 
12-11 08:17:35.354: VERBOSE/initRendering-Vertices(900): i = 924, value = -8.000200 

J'ai perdu 310 éléments.

Existe-t-il un autre moyen de voir tous les éléments du pointeur?

Merci.

+0

Comment est-ce possible? Pourquoi ne joignez-vous pas la sortie stdout à la sortie logcat et essayez d'imprimer ce journal massif directement sur stdout? – ognian

+0

Parce que je suis très nouveau sur le développement Android et je ne sais pas comment faire cela. – VansFannel

+1

http://developer.android.com/guide/developing/tools/adb.html#stdout – ognian

Répondre

2

L'implémentation du journal Android utilise un tampon circulaire de 64 Ko dans le noyau. Si vous parvenez à écrire des données dans le journal plus vite que "logcat" peut le lire, vous commencerez à perdre des lignes. Comme logcat doit attendre sur adb pour envoyer la sortie via USB à votre poste de travail, il n'est pas si difficile de l'écarter.

Utilisez fopen pour créer un fichier appelé /sdcard/debug.txt, remplacez __android_log_print() par fprintf(), puis "adb pull" la sortie après la fin de l'exécution. Cela garantira que rien n'est abandonné.

Questions connexes