12
votes

Environnement de débogage apparemment inutile pour Android

Je viens de commencer à déboguer ma première application Android de la première ligne et je n'arrive pas à utiliser l'outil de débogage comme je le souhaite. Voici mon code:

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  int a = 1 / 0;
}


4 commentaires

Je ressens ta douleur. Visual Studio et d'autres IDE avancés nous ont gâtés. Revenir aux fichiers de journaux anciens est comme à l'aide de Printf () de nouveau pour déboguer.


Voir ma réponse dans Stackoverflow.com/Questtions/2552568/... . La raison pour laquelle vous voyez une méthode différente est que, par défaut, Eclipse ne casse que sur des exceptions non capturées. Votre arithméticepxception a été prise par le cadre Android et Eclipse ne s'est pas arrêté tant que l'exception n'a pas été lancée. Si vous ajoutez un point d'arrêt d'exception sur attrapé arithméticepxceptions, vous rompez au point du lancer. (Le faire en dehors du fil principal devrait également fonctionner, car il ne sera pas emballé par le cadre.)


Ça me rend dingue. C'est 2010, pas les années 1970


Vous devez donc connaître le type d'exception que vous obtiendrez afin que vous puissiez l'attraper afin que cela vous dira qu'il y a une erreur et quel type?


3 Réponses :


2
votes

Eclipse ne déboque pas comme ça. Vous devez utiliser LOGCAT pour voir le message d'erreur réel, puis comprendre où cela s'est passé. Je ne me souviens pas si Logcat affiche un numéro de ligne.


2 commentaires

Eh bien, c'est un bummer - vous voulez dire que tout le débogage indigène Eclipse est là pour aucune raison? Et oui, il y a des numéros de ligne dans logcat (heureusement).


Vous pouvez définir des points d'arrêt, ce qui est vraiment ce que signifie débogage.



1
votes

Le débogage ne signifie pas que vous aurez présenté un numéro de ligne et un texte d'exception lorsque "quelque chose" se passe ... Débogage signifie que vous puissiez définir des points d'arrêt, contenir votre code à des points spécifiques et éventuellement faire des instructions pas à pas , regarder les variables, etc.

Pour détecter des problèmes, vous, en tant que programmeur, vous devez implémenter des textes de journal utiles à l'aide de la classe de la classe , par exemple lors de la sortie et de la saisie de fonctions. En outre, utilisez des blocs d'exception où que vous soupçonniez de vous tromper. En cas d'une division, par exemple, si le diviseur n'est pas statique mais pourrait être n'importe quoi, protéger les actions telles que les divisions! Dans votre bloc de capture, connectez-vous l'événement rencontré ou faites quelque chose d'utile.

Fondamentalement, c'est rien d'Android spécifique, mais commun à Java!


2 commentaires

Je ne veux pas commencer un argument, mais hors de tous les environnements de développement que j'ai utilisés au fil des ans (C, C ++, Python, Java pour le bureau, JavaScript, VB, .NET), étant capable de savoir où exactement un Des exceptions se sont produites, ses coordonnées, une rétroaction et la visualisation de variables locales au moment de l'exception, étaient toutes une partie centrale du processus de débogage. Le débogage n'est certainement pas seulement cela, mais il est clair qu'une lacune de déboguer des applications Android.


Vous avez évidemment brisé le script, mais je ne pense pas que vous comprenez comment déboguer dans l'environnement. Vous pouvez identifier une erreur survenue, vous ajoutez maintenant des essais, des points d'arrêt et des sorties et de la casser réellement. C'est le débogage, le compilateur ou le runtime lancer une exception sans manipuler correctement cela vous dit que vous avez fait quelque chose de mal. Débogage C'est votre approche proactive pour vous débarrasser du bogue.



8
votes

Au début, je dois admettre que vous avez partiellement raison. Il existe des débuggeurs qui vont arrêter l'exécution à une exception et montrer votre ligne de code qui l'a causée. J'aimerais voir ce comportement dans le débogueur Eclipse. Mais les autres réponses ont raison.

Pendant que vous êtes dans Eclipse Aller à la fenêtre -> Afficher la vue -> Autre -> Android -> Logcat Vous obtiendrez maintenant toute la sortie de débogage qui se produit sur l'émulateur ou un périphérique connecté. Avec votre exemple, je vais obtenir la stacktrace suivante. p> xxx pré>

Si vous allez à l'exception la plus profonde montrant que celui qui a augmenté tous les autres, vous verrez P>

03-18 09:45:12.428: ERROR/AndroidRuntime(1778): Caused by: java.lang.ArithmeticException: divide by zero
03-18 09:45:12.428: ERROR/AndroidRuntime(1778):     at android.client.ClientMain.onCreate(ClientMain.java:35)


0 commentaires