56 votes

Comment déboguer des applets Java?

Actuellement, la seule information dont je dispose est un message d'erreur d'une ligne dans la barre d'état du navigateur.

Savez-vous comment je pourrais obtenir une trace de pile par exemple?

53voto

Sami Koivu Points 2420

Outre l'utilisation évidente de la console Java et l'applet viewer, à partir de Java 6 update 7, vous pouvez utiliser le VisualVM qui est livré avec le JDK (JDK_HOME/bin/visualvm). Il vous permet de visualiser les traces de la pile de chaque thread et même de consulter toutes les instances d'objet.

AppletViewer est très pratique, vous pouvez faire un "Run as / Applet Java" de l'Éclipse à exécuter, ou "Debug / Applet Java" pour déboguer votre applet classes.

Cependant, parfois, à en debug liés à la sécurité des trucs le plugin de navigateur environnement est trop différent de appletviewer. Voici ce que vous pouvez faire pour gérer efficacement les débogage des applets dans le navigateur:

1) d'Obtenir des informations de débogage pour les fichiers binaires

La sauvegarde de l' .les fichiers jar de JRE_HOME/lib

(Télécharger et d') Installer un JDK pour la même version que votre JRE.

Copiez le .les fichiers jar de JDK_HOME/jre/lib à JRE_HOME/lib

Les fichiers à l'intérieur de la JDK ont été compilés avec les informations de débogage inclus (source-code le numéro de ligne, les noms de variables, etc) et le JRE fichiers n'ont pas cette information.

Sans cela, vous ne serez pas en mesure de véritablement étape dans la classe de base de code dans votre débogueur.

2) Activer le débogage pour le Plug-in Java

Aller au Panneau de configuration Java / Java / Java Runtime Paramètres / Voir / De l'utilisateur / Paramètres D'Exécution

Et ajoutez les options pour activer le débogage. Quelque chose comme ceci:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n

Les options intéressantes sont le port (à l'aide de 2502 ici, vous pouvez utiliser à peu près n'importe quel port disponible, il suffit de l'écrire vers le bas pour plus tard) et la suspension si vous avez besoin de déboguer l'applet de démarrage, classloading, etc, réglez ce paramètre sur "y". De cette façon, lorsque vous accédez à un applet page, le navigateur va apparaître, le gel de la JVM obtient immédiatement suspendu en attente d'un débogueur pour vous connecter.

3) Utilisez votre IDE favori pour déboguer à Distance le Plug-in Java

Dans Eclipse, par exemple, choisissez Exécuter / Déboguer les Configurations ... / à Distance d'une Application Java

Cliquez sur le bouton "Nouveau".

Assurez-vous que la connexion est de type "Socket Attacher", choisissez "localhost" comme l'hôte si votre navigateur est locale, et le port que vous avez choisi plus tôt (2502 dans l'exemple).

Vous pourriez avoir à inlude l'src.zip dans votre JDK sur l'onglet sources pour avoir la Java de la classe de base des sources disponibles.

Enregistrer la configuration, et une fois que votre navigateur est en cours d'exécution du plug-in (avec la JVM suspendu ou pas) exécuter le débogueur distant de se connecter au plug-in de la JVM, avec un projet contenant l'applet de sources ouvertes.

26voto

Bob Cross Points 13552

Cet article est un peu vieux , mais est toujours d'actualité (y compris une section intitulée "Comment Déboguer des Applets Java Plug-in").

Edit: peut-être une meilleure façon d'obtenir stacktraces est d'utiliser le plugin Java console. Si vous appuyez sur "t" dans cette fenêtre, vous verrez suivantes:

Imprime toutes les thread existant groupes de. Le premier groupe est montré Groupe principal. ca représente active le comte; il le nombre total de threads actifs dans un groupe de thread et de son enfant thread groupes de. agc est synonyme de groupe actif comte; c'est le nombre d'actifs enfant thread groupes d'un groupe de thread. pri est synonyme de priorité; c'est le la priorité d'un thread groupe. La suite Le groupe principal, autre thread groupes être montré en tant que Groupe , d'où le nom de est l'URL associée à une applet. Personne des listes de threads afficher le nom du thread, le thread la priorité, vivante, si le thread est en vie ou détruits si le thread est dans l' train d'être détruit, et le démon si le fil est un fil de démon.

L'autre commande que j'ai utilisé le plus souvent à partir de la console est le niveau de trace de 0 à 5:

Cela définit le niveau de suivi des options comme décrit dans la section suivante, le suivi et la Journalisation.

À partir de cette page, vous verrez que les niveaux ressembler à ceci:

  • 0 - désactivé
  • 1 - base de
  • 2 - réseau, la mise en cache et de base
  • 3 - la sécurité, de réseau et de base
  • 4 - extension, de sécurité, de réseau et de base
  • 5 - LiveConnect, l'extension, la sécurité, le réseau, la température, et de base

Ces outils peuvent tous être assez utile en essayant de démêler ce qui, dans le monde, a pris la tête de votre applets. Je sais qu'ils ont travaillé pour moi.

3voto

Les traces de la pile de ce type d'exception apparaît à la console. Cela peut être activé à partir du Panneau de configuration Java, Avancé (> console Java > Afficher la console) ou certains navigateurs ont des options ou des plugins pour permettre à l'informatique.

Vous pouvez attacher un débogueur pour le fonctionnement du PlugIn processus.

Peut-être la meilleure façon est de ne pas débogage. Écrire des tests. Écrire du code qui n'a pas de couple à des hypothèses inutiles - pour l'exemple que vous exécutez en tant qu'applet. Malheureusement, la plupart GUI/applet exemple de code est écrit très mal.

3voto

Brian Agnew Points 143181

Le visualiseur d'applets prend en charge les options de débogage.

1voto

Pool Points 5127

Les exceptions sont envoyés à la console. Vous pouvez également utiliser le Système.écrire vos propres messages à la console. Pour consulter les résultats, vous aurez besoin d'ouvrir la console en cliquant droit sur l'icône de Java dans le systray et l'ouverture de la console (à noter qu'il est différent pour Microsoft VM).

Pour déboguer des applets correctement, vous pouvez configurer Eclipse pour déboguer les applets. Cliquez-droit sur l'applet fichier source, puis cliquez sur Déboguer Applet. (Si vous avez des paramètres de l'applet, vous devez le configurer.) Ensuite, vous pouvez parcourir le code de l'applet comme vous le feriez pour déboguer tout autre code Java.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X