IBM Java wird standardmäßig mit einer praktischen Funktion namens Method Tracing (*) geliefert. Mithilfe der Methodenverfolgung können Sie die zur Laufzeit aufgerufenen Methoden in chronologischer Reihenfolge anzeigen. Die Verwendung ist sehr einfach. Geben Sie einfach die Methode an, die Sie in den Laufzeitoptionen des Java-Befehls verfolgen möchten (Sie können sie auch in der Eigenschaftendatei oder der Java-API angeben). Sie können auch Platzhalter verwenden, um die zu verfolgende Methode anzugeben.
Lassen Sie es uns sofort verwenden. Lassen Sie uns die sample.HelloMT-Klasse mit allen Methoden aller Klassen des Beispielpakets als Trace-Ziel ausführen. Geben Sie die Laufzeitoptionen mit -Xtrace: ...
wie folgt an:
java -Xtrace:methods={sample/*},print=mt sample.HelloMT
Das auszuführende Java-Programm (HelloMT.java) lautet wie folgt.
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();
}
}
Das Ausführungsergebnis ist wie folgt. Die Methodenablaufverfolgung wird standardmäßig als Standardfehler gedruckt.
Standardausgabe
Hello Method Trace. Enjoy Method Trace!
Standart Fehler
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
Weitere Informationen zu Optionen (-Xtrace: ...
) finden Sie im IBM Java-Online-Handbuch unter dem Referenzlink. Hier finden Sie einige praktische Beispiele für Optionsspezifikationen.
** Beispiel 1) Geben Sie mehrere Bedingungen für die zu verfolgende Methode an **
-Xtrace:methods={sample/*,test/*},print=mt
Sie können mehrere durch Kommas getrennte Bedingungen angeben.
** Beispiel 2) Angeben von Ablaufverfolgungsbedingungen mit begrenzten Klassen- / Methodennamen **
-Xtrace:methods={sample/HelloMT},print=mt
-Xtrace:methods={sample/HelloMT.say},print=mt
In der oberen Zeile werden alle Methoden der sample.HelloMT-Klasse verfolgt.
In der unteren Zeile wird nur die say-Methode der sample.HelloMT-Klasse verfolgt.
** Beispiel 3) Trace mit Parameterinformationen **
-Xtrace:methods={com/ibm/sample/HelloMT.say*()},print=mt
Sie können das Einschließen von Parameterinformationen verfolgen, indem Sie am Ende der Methodenspezifikation ()
hinzufügen.
Wenn das Argument ein Grundelement ist, können Sie den Wert auch in der Ablaufverfolgung sehen. Wenn das Argument ein Objekt ist, wird die hexadezimale Adresse ausgegeben, sodass es nicht möglich ist, den Wert des Inhalts zu überprüfen. Wenn es jedoch null ist, wird auch "argumente: (null)" in der Ablaufverfolgung ausgegeben, sodass es ein Hinweis ist, um das Problem zu bestimmen. Wird sein.
** Beispiel 4) Angeben von Ausschlussbedingungen für Spuren **
-Xtrace:methods={sample/*,!sample/HelloMT.sayMore},print=mt
Wenn zu Beginn !
Beschrieben wird, wird die Trace-Ausschlussbedingung angegeben.
Wenn im obigen Beispiel die Ausschlussspezifikation zuerst beschrieben wird, ist sie ungültig und die sayMore-Methode wird auch in der Ablaufverfolgung ausgegeben. Achten Sie daher auf die Reihenfolge der Beschreibung.
** Beispiel 5) Trace in Datei ausgeben **
-Xtrace:none,methods={sample/HelloMT},maximal=mt,output=C:\MTrace\mtrace1.out
Wenn Sie keine angeben, wird eine große Anzahl von Protokollen als Standardverfolgungspunkt ausgegeben. Seien Sie also vorsichtig!
Die Ausgabedatei ist im Binärformat und muss als Referenz formatiert werden. Formatieren Sie mit der IBM Java TraceFormat-Klasse wie folgt:
C:\MTrace>java com.ibm.jvm.format.TraceFormat mtrace1.out
Weitere Informationen zur TraceFormat-Klasse finden Sie unter dem Referenzlink (** Ausführen des Trace-Formatierers **).
Für den oben gezeigten Methoden-Trace (Beispiele 1 bis 5) ist der Methoden-Trace vom Anfang bis zum Ende der JVM gültig. Möglicherweise möchten Sie jedoch einen Teil-Trace erstellen. Sie können die Suspend-Option und die Trace-API (com.ibm.jvm.Trace-Klasse) verwenden, um den Anfang und das Ende des Trace zu steuern. Starten Sie zunächst die JVM mit dem Trace, der mit der unten gezeigten Suspend-Option angehalten wurde.
-Xtrace:methods={*},print=mt,suspend
Rufen Sie dann Trace.resume () von Ihrem Java-Programm aus auf, in dem Sie die Ablaufverfolgung starten möchten, um die Ablaufverfolgung zu starten. Rufen Sie abschließend Trace.suspend () auf, um den Trace wieder in einen angehaltenen Zustand zu versetzen. Das folgende HelloMT2.java ist ein Beispiel.
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();
}
}
das ist alles.
IBM SDK, Java Technology Edition, Version 8 IBM Java Online-Handbuch. https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/welcome/welcome_javasdk_version.html
Using method trace Dies ist die oberste Seite von Method Trace im IBM Java Online Manual. https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/method_trace.html
Controlling the trace Dies ist die oberste Seite von Method Trace im IBM Java Online Manual. 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 Auf dieser Seite werden die Details und die Syntax der Methoden zur Methodenverfolgung erläutert. 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 Auf dieser Seite wird die Verwendung der Java-API (com.ibm.jvm.Trace-Klasse) erläutert. 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 Auf dieser Seite wird erläutert, wie der Formatierer (com.ibm.jvm.format.TraceFormat) verwendet wird, der für die Ausgabe des Trace in eine Datei erforderlich ist (siehe Beispiel 5 oben). https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/trace_formatter.html
Hier sind einige Notizen, auf die ich tatsächlich eingegangen bin.
Bei Verwendung der Methodenverfolgung in der WebSphere Application Server Liberty Profile-Umgebung (im Folgenden als WAS Liberty-Umgebung bezeichnet) wird die Option "-Xtrace: Methods = ..." in der Datei "jvm.options" beschrieben, jedoch in der Windows-Version von WAS In der Liberty-Umgebung muss das Symbol "!" Mit einem "^" (Hut-Symbol) maskiert werden, wenn Ausschlüsse als Option angegeben werden (da der Startbefehl für den WAS Liberty-Server in der Windows-Batchdatei implementiert ist). .. Ein Beschreibungsbeispiel ist unten gezeigt.
-Xtrace:methods={sample/*,^!sample/Hello.set*},print=mt
Wenn Sie versuchen, com.ibm.jvm.Trace in eine Eclipse-basierte IDE-Umgebung zu importieren, kann aufgrund von Zugriffsbeschränkungen (Hinweis 1) ein Fehler auftreten und Sie können möglicherweise nicht kompilieren. Hinweis 1) Wenn Sie mit der Maus über die Fehlermarkierung fahren, wird die Meldung "Zugriffsbeschränkung: Der Typ 'Trace' ist keine API (Einschränkung der erforderlichen Bibliothek ...") angezeigt.
Dies kann durch folgende Maßnahmen vermieden werden (Anmerkung 2). Hinweis 2) Der Screenshot in der Erläuterung ist die Operation in ** IBM Rational Application Developer V9.6.1 **.
Klicken Sie mit der rechten Maustaste auf den Projektordner und wählen Sie: Aus dem Kontextmenü: ** Erstellungspfad (B) **> ** Erstellungspfadkonfiguration (C) **
Das Dialogfeld "Java Build Path" wird angezeigt. Wählen Sie die Registerkarte ** Bibliothek (L) **. Klicken Sie auf das Dreiecksymbol in ** JRE System Library **, um es zu erweitern Wählen Sie oben im erweiterten Bereich ** Zugriffsregel ** aus und klicken Sie auf die Schaltfläche ** Bearbeiten **. Das Dialogfeld "Typzugriffsregel" wird angezeigt. Klicken Sie auf die Schaltfläche ** Hinzufügen (A) **.
Das Dialogfeld "Zugriffsregel hinzufügen" wird angezeigt.
com / ibm / jvm / **
in ** Regelmuster (R) ** ein
Klicken Sie auf die Schaltfläche ** OK **.
Nachdem Sie bestätigt haben, dass auf "com / ibm / jvm" zugegriffen werden kann, klicken Sie auf die Schaltfläche "OK", um den geöffneten Dialog zu schließen.
Die Fehlermarkierung links neben der Java-Quellimportanweisung sollte jetzt verschwinden.
Recommended Posts