2010-07-23 3 views
8

Souvent, mes programmes se bloquent. Je ne vois rien dans le LogCat ou d'autres informations utiles ailleurs pour savoir ce qui ne va pas. La seule chose que je vois est une sorte d'exception. Ceci est inacceptable et rend la programmation Android presque impossible. Je suis sûr qu'il doit y avoir une aide supplémentaire pour le débogage, mais après des semaines de recherche, rien.Astuces de débogage Android

Est-ce que quelqu'un a des conseils sur la façon de trouver un bogue dans un programme qui se bloque simplement?

Question générale Je sais, mais sans réponse, je vais devoir arrêter d'essayer de développer des applications pour Android. Je ne peux pas passer des semaines de recherche pour chaque erreur simple.

+1

Merci, quand je vois une réponse à quelque chose, je garderai cela à l'esprit. – Mitch

Répondre

3

Il existe également le débogueur Eclipse actuel. Si vous exécutez simplement le programme avec le débogueur jusqu'à ce qu'il se bloque, vous pouvez ne pas voir une trace de pile particulièrement utile. Mais si vous ajoutez un point d'arrêt ou deux dans le code qui arrive juste avant le crash, vous pouvez passer à travers et comprendre ce qui ne va pas.

En outre, même si je suis encore assez nouveau pour le développement Android, mon expérience est que la plupart des plantages mystérieux dans mon code sont essentiellement ClassCastException s. Examinez soigneusement tous les endroits où vous souhaitez diffuser quelque chose d'une classe à une autre, et assurez-vous que vous ne présumez pas que quelque chose est d'un type que ce n'est pas réellement.

+0

Je vais garder un œil sur ClassCastException s, mais je ne vois pas ça maintenant. Je suis généralement assez prudent étant un programmeur C++ où le casting est presque toujours une mauvaise idée. Mais je ferai attention de ceci. Merci. – Mitch

+1

C'est généralement une mauvaise idée en Java aussi, mais cela arrive parfois dans la programmation Android, comme 'textView = (TextView) findViewById (R.id.textview1)' – MatrixFrog

+0

Je suis un programmeur Android et nous utilisons le casting tout le temps. Parfois, la recherche des origines de la classe et des informations sur les pages Android Developer aide à comprendre ce que vous lancez (si ce n'est pas la même classe). – Azurespot

0

En fait, je ne suis pas sûr que vous ayez un crash normal. Ce pourrait être un ANR ou un phénomène similaire qui verrouille tout. Cela vous ferait probablement voir moins de journaux de votre application. Je pense que le support de débogage pour Android est assez chic par rapport à d'autres environnements avec lesquels j'ai travaillé.

1

Il me semble que vous avez une erreur dans votre installation Android quelque part. Le LogCat devient parfois confus et se déconnecte du périphérique virtuel (parlé ici: getting blank screen in logcat). Mais votre problème semble beaucoup plus grave. Je sais que c'est une douleur, mais envisager de faire une nouvelle installation de votre système de développement Android (y compris une toute nouvelle installation Eclipse).

J'ai eu des problèmes similaires, et une nouvelle installation a aidé un peu (surtout après quelques mises à niveau - les choses peuvent devenir confuses).

Bonne chance.

1

Ceci est un longhot total, mais est ce qui s'est avéré être la réponse pour ce débutant Android: êtes-vous sûr que votre appareil est connecté? Ce qui est arrivé dans mon cas (qui m'a amené ici, pensant que mon application ne signalait pas de crash à LogCat) est que ce que je pensais être en train de déboguer n'était pas mon téléphone, mais l'émulateur Android avoir couru en même temps. Quand j'ai réalisé que cela se passait, j'ai quitté l'émulateur, et le logcat s'est arrêté.

Quand je courais logcat à nouveau, il se trouve qu'il n'a même pas été de trouver mon téléphone:

$ ./adb logcat 
- waiting for device - 

À partir de là, je devais passer par des cerceaux pour obtenir mon téléphone pour être reconnu, comme adb not finding my device/phone (MacOS X) et enabling debugging on the phone. Enfin, je devais set android:debuggable=true. Après avoir tué adb et lancé logcat à nouveau, je regardais les bons journaux, et je pouvais voir les exceptions de plantage.

0

Suivez les chiffres en rouge.Vous devez être en mode débogage

1) Cliquez sur l'événement qui a jeté l'exception 2) Naviguer tot les variables il générées pour cet événement 3) cliquez sur le « e » 4) Regardez le detailMessage

enter image description here