7 votes

Comment savoir pourquoi une application a planté ?

J'obtiens régulièrement l'infâme et peu utile "malheureusement crappyApp a cessé de fonctionner". Comment savoir ce qui s'est réellement passé ? Je suppose qu'il y a une trace de pile quelque part, bien que l'idéal serait de modifier le message inutile lui-même si cela est possible sur un appareil enraciné.

0 votes

Pour commencer, nous avons le dépannage du tag-wiki ;)

4voto

Vous pouvez simplement voir la trace de la pile de crash après qu'un crash se soit produit. Utilisez la commande ADB ci-dessous,

adb logcat -b crash #default
adb -d logcat -b crash #show from device when multiple device
adb -s logcat -b crash #show from simulator when multiple device

2voto

Milner Points 533

Il existe de multiples façons d'obtenir des informations utiles. Mais comme Dan a souligné Les solutions sur appareil nécessitent Root (à partir de JellyBean) - et les solutions hors appareil ADB :

  • adb logcat a déjà été décrite dans La réponse de Dan . Pour plus de détails, vous pouvez consulter notre journalisation tag-wiki .
  • adb bugreport > report.txt donne des informations très détaillées, y compris des détails de la dumpsys , dumpstate et logcat outils. Plusieurs outils permettant de faciliter l'analyse de ses résultats peuvent être trouvés, par exemple, dans les réponses aux questions suivantes Meilleure méthode pour afficher la sortie de "adb bugreport" ? sur notre site partenaire.
  • il existe des outils à installer sur votre ordinateur qui utilisent ce qui précède (ou au moins des parties de celui-ci), par exemple QtADB (pour Linux, Mac et Windows)
  • il existe des applications Android comme Rapport de bug mais, comme nous l'avons souligné, la plupart d'entre eux auront besoin de Root. Lecteur de rapports de bogue prétend toutefois lire les journaux du système (logcat, dumpsys, dmesg, top et bien d'autres) sur votre appareil, sans Root donc ça peut valoir le coup d'essayer.

1voto

Andy Brudtkuhl Points 1714

Dans la plupart des cas, si le débogage USB est activé, vous pouvez utiliser la fonction adb logcat pour voir la sortie d'exception. Cela inclut généralement une trace de la pile, mais ce n'est pas souvent utile, à moins que vous ne disposiez du code source de l'application. Quoi qu'il en soit, le développeur de l'application vous sera probablement reconnaissant de l'inclure dans tout rapport de bogue.

1 votes

Merci, je préférerais une solution native directement sur l'appareil si possible. Bon point concernant l'utilité, la trace n'inclut-elle pas au moins des exceptions java judicieusement nommées ? ou est-ce que dalvik les obscurcit ?

0 votes

Il existe des applications qui permettent de lire le journal à partir de l'appareil (recherchez Google Play pour logcat ), mais dans Jelly Bean et les versions ultérieures, les applications ne peuvent pas lire les journaux des autres applications. La trace inclut les noms des exceptions Java, mais NullPointerException ne vous dit pas grand-chose, sauf si vous êtes le développeur de l'application.

1 votes

Bon point pour cette exception :/ puisque j'ai enraciné mon appareil de toute façon, j'espérais un moyen plus confortable que logcat, bien que ce soit mieux que rien....

0voto

SudoSURoot Points 256

Lisez les fichiers sous /data/anr/ ce qui signifie "apps not responding". J'utilise adb shell cat /data/anr/$FILE

Il y en aura une pour chaque application qui se ferme de force, ou qui ne répond pas pour une raison quelconque.

1 votes

Lorsque l'on regarde dans /data/anr/ dans un explorateur de fichiers racine, il n'y a qu'un seul traces.txt qui a été modifié il y a trois jours (même si une application s'est plantée aujourd'hui), et il semble qu'il ne contienne que des plantages système, pas des plantages d'applications. Existe-t-il un autre moyen de voir ces backtraces d'applications ?

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X