2010-05-20 2 views
5

J'ai récemment commencé à travailler sur une application qui a à la fois des composants natifs Java et . J'essaie de générer des informations de trace pour les deux composants en utilisant Debug.startMethodTracing("myapp") et Debug.startNativeTracing() alternativement. Cependant, les deux se comportent de manière inattendue.Comment utiliser les API startMethodTracing sur Android?

Lorsque j'utilise Debug.startMethodTracing("myapp"), je peux voir un fichier /sdcard/myapp.trace en cours de création mais il est toujours vide, peu importe combien de temps je cours mon application. Lorsque j'utilise Debug.startNativeTracing() et démarrez l'émulateur avec le commutateur -trace <tracename>, je vois un message indiquant "Trace a commencé", mais lorsque j'essaie d'exécuter mon application, l'émulateur se bloque.

Est-ce que je manque quelque chose d'évident ici? Comment puis-je déboguer ce problème?

Répondre

5

Lorsque cela m'est arrivé, c'est parce que j'ai eu des paires de démarrage/arrêt incompatibles. Par exemple, si vous démarrez le traçage de la méthode mais ne l'arrêtez jamais, je pense qu'Android n'écrit simplement jamais les informations de trace mises en mémoire tampon dans un fichier. De même, si vous avez un arrêt supplémentaire au milieu, ou ne commencez jamais, etc, vous n'obtiendrez pas les résultats souhaités.

Autre que cette méthode traçage a fonctionné bien pour moi. En revanche, le suivi natif semble ne pas être pris en charge (encore), car j'obtiens une erreur "Fichiers de trace Qemu non encore supportés" lorsque j'essaie de charger les résultats de trace natifs dans traceview. (Tout commentaire sur ce de Google?)

  • Kris
+0

Fondamentalement, je pense, est que si vous avez terminé simplement() votre activité avant d'appeler arrêt, le tracé ne s'arrêtera pas et vous ne obtenir un fichier complet. –