2008-12-03 3 views
10

Die Protokolldatei eines JVM-Absturzes enthält alle möglichen nützlichen Informationen zum Debuggen, z. B. gemeinsam genutzte Bibliotheken und die gesamte Umgebung. Kann ich die JVM zwingen, eines dieser Programme programmatisch zu generieren? entweder durch Ausführen von Code, der es abstürzt oder auf andere Weise? Oder alternativ Zugriff auf die gleiche Information auf andere Weise?Kann ich die Generierung einer JVM-Crash-Protokolldatei erzwingen?

Antwort

8

Sie können versuchen, einen OutOfMemoryError zu werfen und das Argument -XX: + HeapDumpOnOutOfMemoryError jvm hinzuzufügen. Dies ist ab 1.6 neu, ebenso wie die anderen von McDowell vorgeschlagenen Tools. http://blogs.oracle.com/watt/resource/jvm-options-list.html

+1

Siehe auch http://stackoverflow.com/questions/5576672/force-or-generate-jvm-core-dump – jhclark

+2

Der Link ist tot (Sie könnten Oracle danken). – willome

+0

Diese andere Frage scheint für einen Core-Dump zu sein, den man an den JVM-Implementierer senden könnte, z.B. IBM, anstatt ein 'hs_err_pid * .log'. – PJTraill

0

Ich bin ziemlich sicher, dass dies mit dem IBM JDK getan werden kann, da ich vor einiger Zeit mit ihrem Stack Analyzer herumspielte. Eine Option, um den Speicherauszug zu erzwingen, würde nur eine outOfMemoryException verursachen.

Diese Tools können einige Hinweise geben http://www.ibm.com/developerworks/java/library/j-ibmtools1/

+0

Der Link scheint über ein Tool zu sein, das nur für IBM-Kunden verfügbar ist, von denen ich keine bin. – DJClayworth

2

Werfen Sie einen Blick auf die JDK Development Tools, insbesondere die Troubleshooting Tools für Dumping den Haufen, Druck Config-Info, und so weiter.

+0

Von den Tools scheint ['jstack'] (http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstack.html) am vielversprechendsten zu sein, in der Form' jstack -l - F -m '(' F' wird nicht benötigt, wenn der Prozess nicht hängt). Dadurch erhalten Sie Stacks aller Threads im gemischten Modus (Java und systemeigen) und gesperrten Synchronisierern, auch wenn der Prozess hängt. – PJTraill

+0

Oder siehe https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html für Oracle Java 8 (vorherige Links sind 6, aber wahrscheinlich nicht sehr unterschiedlicher Inhalt). – PJTraill

Verwandte Themen