Essayez d'utiliser le traçage de méthode IBM Java

Aperçu

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.

Comment utiliser

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

-Xtrace: exemple de spécification d'option

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.

Contrôle de début / fin de la trace de méthode par l'API Java

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.

Lien de référence

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

Autres (notes, etc.)

Voici quelques notes dans lesquelles je me suis réellement engagé.

Précautions lors de l'utilisation dans l'environnement de profil Liberty de WebSphere Application Server version Windows

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 ne pouvez pas accéder à com.ibm.jvm.Trace dans un environnement Eclipse IDE

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 **. image.png La boîte de dialogue "Règle d'accès de type" s'affiche. Cliquez sur le bouton ** Ajouter (A) **. image.png

La boîte de dialogue "Ajouter une règle d'accès" s'affiche.

Après avoir confirmé que com / ibm / jvm est accessible, cliquez sur le bouton OK pour fermer la boîte de dialogue ouverte. image.png

Le marqueur d'erreur affiché à gauche de l'instruction d'importation de source Java devrait maintenant disparaître.

Recommended Posts

Essayez d'utiliser le traçage de méthode IBM Java
Essayez d'utiliser la méthode each_with_index
Essayez d'utiliser RocksDB avec Java
Essayez de gratter en utilisant Java [Note]
Méthode Java
Essayez d'utiliser Redis avec Java (jar)
Méthode Java
[Java] Essayez de mettre en œuvre à l'aide de génériques
Essayez d'extraire la méthode publique de java
[Java] méthode
Essayez d'utiliser le SDK Java d'Hyperledger Iroha
[Java] Où avez-vous essayé d'utiliser java
[Java] méthode
Essayez d'utiliser le framework Java Nablarch [Application Web]
Essayez d'utiliser l'API Stream en Java
Étude de Java Essayez d'utiliser un scanner ou une carte
Essayez d'utiliser l'API au format JSON en Java
Essayez d'utiliser l'API REST de JobScheduler - implémentation Java RestClient--
Essayez d'utiliser la télécommande Wii en Java
Essayez d'utiliser libGDX
Essayez d'utiliser Maven
Essayez d'utiliser powermock-mockito2-2.0.2
Essayez d'utiliser GraalVM
Essayez Java 8 Stream
Essayez d'utiliser jmockit 1.48
Référence de la méthode Java8
[Java] méthode forEach
Essayez d'utiliser SwiftLint
Essayez d'utiliser Log4j 2.0
référence de la méthode java8
Essayez grossièrement Java 9
[Java] Méthode aléatoire
[Java] méthode de fractionnement
Essayez d'utiliser Firebase Cloud Functions sur Android (Java)
Essayez d'utiliser la classe de test RestClient de JobScheduler REST-API-Java-
Essayez d'utiliser Sourcetrail (version win) avec du code Java
Essayez d'utiliser l'API Cloud Vision de GCP en Java
Essayez d'utiliser Sourcetrail (version macOS) avec du code Java
Essayez une recherche similaire de recherche d'images à l'aide du SDK Java [Recherche]
Essayez d'accéder à l'ensemble de données depuis Java en utilisant JZOS
Essayez la communication en utilisant gRPC sur un serveur Android + Java
Essayez d'utiliser l'analyse syntaxique de l'API COTOHA en Java
Essayez d'utiliser le Framework Axon
Tri à l'aide du comparateur java
Essayez d'utiliser l'API REST de JobScheduler
Méthode de connexion JAVA DB
Essayez d'utiliser la WhiteBox de PowerMock
Essayez d'implémenter le tamis Eratostenes en utilisant la bibliothèque standard de Java
Essayez la recherche similaire de Recherche d'images à l'aide du SDK Java [Inscription]
Mémo d'apprentissage Java (méthode)
À propos de la liaison de méthode Java
Essayez d'utiliser Talend Part 2
A propos des méthodes de fractionnement (Java)
Etudier Java 8 (voir méthode)
Pratique de grattage avec Java ②
Appelons IBM Watson Assistant 2018-07-10 à partir du SDK Java.
Programmation Java (méthode de classe)
Pratique du grattage avec Java ①
Formation à l'aide de la méthode each_with_index