web-dev-qa-db-fra.com

L'application s'est arrêtée de façon inattendue: comment déboguer?

Veuillez noter que, contrairement à de nombreuses autres questions ayant pour titre "l'application s'est arrêtée de manière inattendue", je ne demande pas de dépannage d'un problème particulier.

Je demande plutôt un aperçu de la meilleure stratégie pour une recrue Android/Eclipse/Java pour s'attaquer à cette formidable tâche de digérer d'énormes quantités d'informations afin de développer (et déboguer!) Une simple application Android .

Dans mon cas, j'ai pris l'exemple d'application squelette du SDK, je l'ai modifié légèrement et qu'est-ce que j'ai eu au moment où j'essaye de l'exécuter?

L'application (process.com.example.Android.skeletonapp) s'est arrêtée de manière inattendue. Veuillez réessayer.

OK, donc je sais que je dois regarder LogCat. C'est plein de lignes horodatées qui me regardent ... Que dois-je faire maintenant? Que dois-je rechercher?

Existe-t-il un moyen de suivre le programme en une seule étape, de trouver la déclaration qui fait planter l'application? (Je pensais que les programmes Java ne plantaient jamais, mais apparemment je me trompais)

Comment placer un point d'arrêt?

Pouvez-vous recommander un Android débogage tutoriel en ligne, autre que celui-ci ?

24
Android Eve

Je suis également un débutant Eclipse/Android, mais j'espère que mon processus de débogage simple peut aider ...

Vous définissez des points d'arrêt dans Eclipse en cliquant avec le bouton droit à côté de la ligne à laquelle vous souhaitez rompre et en sélectionnant "Basculer le point d'arrêt". De là, vous voudrez sélectionner "Debug" plutôt que le "Run" standard, ce qui vous permettra de passer à travers et ainsi de suite. Utilisez les filtres fournis par LogCat (référencés dans votre tutoriel) afin de pouvoir cibler les messages que vous souhaitez plutôt que de parcourir toute la sortie. J'espère que cela contribuera grandement à vous aider à comprendre vos erreurs.

Quant aux autres bons tutoriels, j'en cherchais quelques-uns moi-même, mais je n'ai pas encore trouvé de gemmes.

16
HappyCodeMonkey

Filtrez votre journal en erreur et recherchez EXCEPTION FATALE

9
jqpubliq

Si vous utilisez l'affichage Logcat dans la perspective de "débogage" dans Eclipse, les lignes sont codées par couleur. Il est assez facile de trouver ce qui a fait planter votre application, car elle est généralement en rouge.

La machine virtuelle Java (ou Dalvik) ne doit jamais se bloquer, mais si votre programme lève une exception et ne la détecte pas, le VM terminera votre programme, ce qui est le "crash" que vous voyez.

4
Richard

Vérifiez si votre application dispose des autorisations nécessaires. J'obtenais également la même erreur et j'ai vérifié le journal de débogage logcat qui montrait ceci:

04-15 13:38:25.387: E/AndroidRuntime(694): Java.lang.SecurityException: Permission Denial: starting Intent { act=Android.intent.action.CALL dat=tel:555-555-5555 cmp=com.Android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44068640 694:rahulserver.test/10055} (pid=694, uid=10055) requires Android.permission.CALL_PHONE

J'ai ensuite donné l'autorisation nécessaire dans mon manifeste Android qui a fonctionné pour moi.

0
rahulserver