IBM Java est livré en standard avec une fonction pratique appelée traçage de méthode (*). Vous pouvez utiliser le suivi des méthodes pour voir les méthodes appelées au moment de l'exécution dans l'ordre chronologique. C'est très facile à utiliser, spécifiez simplement la méthode que vous souhaitez tracer dans les options d'exécution de la commande java (vous pouvez également le spécifier dans le fichier de propriétés ou l'API Java). Vous pouvez également utiliser des caractères génériques pour spécifier la méthode à tracer.
Utilisons-le tout de suite. Essayez d'exécuter la classe sample.HelloMT avec toutes les méthodes de toutes les classes de l'exemple de package en tant que cibles de trace. Spécifiez les options d'exécution avec -Xtrace: ...
comme suit:
java -Xtrace:methods={sample/*},print=mt sample.HelloMT
Le programme Java (HelloMT.java) à exécuter est le suivant.
HelloMT.java
package sample;
public class HelloMT {
private void say() {
System.out.println("Hello Method Trace.");
sayMore("Enjoy Method Trace!");
}
private void sayMore(String message) {
System.out.println(message);
}
public static void main(String args[]) {
HelloMT hello = new HelloMT();
hello.say();
}
}
Le résultat de l'exécution est le suivant. La trace de méthode est imprimée par défaut comme une erreur standard.
Sortie standard
Hello Method Trace. Enjoy Method Trace!
Erreur standard
12:15:33.618*0x2cb0500 mt.3 > sample/HelloMT.main([Ljava/lang/String;)V bytecode static method 12:15:33.618 0x2cb0500 mt.0 > sample/HelloMT.say()V bytecode method, this = 0xfff3b990 12:15:33.618 0x2cb0500 mt.0 > sample/HelloMT.sayMore(Ljava/lang/String;)V bytecode method, this = 0xfff3b990 12:15:33.618 0x2cb0500 mt.6 < sample/HelloMT.sayMore(Ljava/lang/String;)V bytecode method 12:15:33.618 0x2cb0500 mt.6 < sample/HelloMT.say()V bytecode method 12:15:33.618 0x2cb0500 mt.9 < sample/HelloMT.main([Ljava/lang/String;)V bytecode static method
Pour plus d'informations sur les options (-Xtrace: ...
), consultez les manuels en ligne IBM Java répertoriés dans les liens de référence, et voici quelques exemples pratiques de spécification d'options.
** Exemple 1) Spécifiez plusieurs conditions pour la méthode à tracer **
-Xtrace:methods={sample/*,test/*},print=mt
Vous pouvez spécifier plusieurs conditions séparées par des virgules.
** Exemple 2) Spécification des conditions de trace avec des noms de classe / méthode limités **
-Xtrace:methods={sample/HelloMT},print=mt
-Xtrace:methods={sample/HelloMT.say},print=mt
Dans la ligne supérieure, toutes les méthodes de la classe sample.HelloMT sont tracées.
Dans la ligne inférieure, seule la méthode dite de la classe sample.HelloMT est tracée.
** Exemple 3) Trace avec informations sur les paramètres **
-Xtrace:methods={com/ibm/sample/HelloMT.say*()},print=mt
Vous pouvez suivre y compris les informations de paramètre en ajoutant ()
à la fin de la spécification de méthode.
Si l'argument est une primitive, vous pouvez également voir la valeur dans la trace. Si l'argument est un objet, l'adresse hexadécimale est sortie, il n'est donc pas possible de vérifier la valeur du contenu, mais si elle est nulle, ʻarguments: (null) `est également affiché dans la trace, donc c'est un indice pour déterminer le problème. Sera.
** Exemple 4) Spécification des conditions d'exclusion de trace **
-Xtrace:methods={sample/*,!sample/HelloMT.sayMore},print=mt
Si !
Est décrit au début, la condition d'exclusion de trace sera spécifiée.
Dans le cas de l'exemple ci-dessus, si la spécification d'exclusion est décrite en premier, elle sera invalide et la méthode sayMore sera également sortie vers la trace, alors faites attention à l'ordre de la description.
** Exemple 5) Trace de sortie dans un fichier **
-Xtrace:none,methods={sample/HelloMT},maximal=mt,output=C:\MTrace\mtrace1.out
Si vous ne spécifiez aucun, une grande quantité de journaux sera sortie comme point de trace par défaut, alors soyez prudent!
Le fichier de sortie est au format binaire et doit être formaté pour référence. Formatez à l'aide de la classe IBM Java TraceFormat comme suit:
C:\MTrace>java com.ibm.jvm.format.TraceFormat mtrace1.out
Veuillez consulter le lien de référence (** Exécution du formateur de trace **) pour plus de détails sur la classe TraceFormat.
Pour la trace de méthode illustrée ci-dessus (exemples 1 à 5), la trace de méthode est valide du début à la fin de la JVM, mais vous pouvez souhaiter effectuer une trace partielle. Vous pouvez utiliser l'option suspend et l'API Trace (classe com.ibm.jvm.Trace) pour contrôler le début et la fin de la trace. Tout d'abord, démarrez la JVM avec la trace interrompue avec l'option de suspension spécifiée comme indiqué ci-dessous.
-Xtrace:methods={*},print=mt,suspend
Appelez ensuite Trace.resume () à partir de votre programme Java où vous souhaitez démarrer le traçage pour démarrer le traçage. Enfin, appelez Trace.suspend () pour remettre la trace dans un état suspendu à nouveau. Le HelloMT2.java suivant est un exemple.
HelloMT2.java
package sample;
import com.ibm.jvm.Trace;
public class HelloMT2 {
private void say() {
System.out.println("Hello Method Trace.");
sayMore("Enjoy Method Trace!");
}
private void sayMore(String message) {
System.out.println(message);
}
public static void main(String args[]) {
HelloMT2 hello = new HelloMT2();
Trace.resume();
hello.say();
Trace.suspend();
}
}
c'est tout.
IBM SDK, Java Technology Edition, Version 8 Manuel en ligne IBM Java. https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/welcome/welcome_javasdk_version.html
Using method trace Ceci est la première page de Method Trace dans le manuel IBM Java Online. https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/method_trace.html
Controlling the trace Ceci est la première page de Method Trace dans le manuel IBM Java Online. https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/trace_control.html
Detailed descriptions of trace options Cette page explique les détails et la syntaxe des options de traçage de méthode. https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/trace_options_detail.html
Using the Java API Cette page explique comment utiliser l'API Java (classe com.ibm.jvm.Trace). https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/trace_app_api.html
Running the trace formatter Cette page explique comment utiliser le formateur (com.ibm.jvm.format.TraceFormat) requis lorsque la trace est sortie dans un fichier (voir l'exemple 5 ci-dessus). https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/trace_formatter.html
Voici quelques notes dans lesquelles je me suis réellement engagé.
Lors de l'utilisation du traçage de méthode dans l'environnement WebSphere Application Server Liberty Profile (ci-après dénommé environnement WAS Liberty), l'option -Xtrace: methods = ...
est décrite dans le fichier jvm.options, mais la version Windows de WAS Dans l'environnement Liberty, le symbole «!» Doit être échappé par un «^» (symbole du chapeau) lors de la spécification des exclusions comme option (car la commande de démarrage du serveur WAS Liberty est implémentée dans le fichier de commandes Windows). .. Un exemple de description est présenté ci-dessous.
-Xtrace:methods={sample/*,^!sample/Hello.set*},print=mt
Si vous essayez d'importer com.ibm.jvm.Trace dans un environnement IDE basé sur Eclipse, une erreur peut se produire en raison de restrictions d'accès (Remarque 1) et vous ne pourrez peut-être pas compiler. Note 1) Si vous passez la souris sur le marqueur d'erreur, vous pouvez voir le message "Restriction d'accès: Le type" Trace "n'est pas API (restriction sur la bibliothèque requise ...".
Cela peut être évité par les mesures suivantes (Note 2). Note 2) La capture d'écran dans l'explication est l'opération dans ** IBM Rational Application Developer V9.6.1 **.
Cliquez avec le bouton droit sur le dossier du projet et sélectionnez: Dans le menu contextuel: ** Chemin de construction (B) **> ** Configuration du chemin de construction (C) **
La boîte de dialogue «Java Build Path» s'affiche. Sélectionnez ** l'onglet Bibliothèque (L) **. Cliquez sur l'icône triangulaire dans ** JRE System Library ** pour la développer Sélectionnez ** Règle d'accès ** en haut de la section développée et cliquez sur le bouton ** Modifier **. La boîte de dialogue "Règle d'accès de type" s'affiche. Cliquez sur le bouton ** Ajouter (A) **.
La boîte de dialogue "Ajouter une règle d'accès" s'affiche.
dans le menu déroulant, -Entrez
com / ibm / jvm / **` dans ** Rule Pattern (R) **
Cliquez sur le bouton ** OK **.
Après avoir confirmé que com / ibm / jvm
est accessible, cliquez sur le bouton OK pour fermer la boîte de dialogue ouverte.
Le marqueur d'erreur affiché à gauche de l'instruction d'importation de source Java devrait maintenant disparaître.
Recommended Posts