Wie erhalte ich die aktuelle Stapelverfolgung in Java, so wie man in .NET Folgendes tun kann Environment.StackTrace
?
Ich fand Thread.dumpStack()
aber das ist nicht das, was ich will - ich möchte den Stack-Trace zurückbekommen, nicht ausdrucken.
Wie erhalte ich die aktuelle Stapelverfolgung in Java, so wie man in .NET Folgendes tun kann Environment.StackTrace
?
Ich fand Thread.dumpStack()
aber das ist nicht das, was ich will - ich möchte den Stack-Trace zurückbekommen, nicht ausdrucken.
Um den Stack-Trace aller Threads zu erhalten, können Sie entweder das Dienstprogramm jstack oder JConsole verwenden oder ein kill -quit-Signal (auf einem Posix-Betriebssystem) senden.
Wenn Sie dies jedoch programmatisch tun möchten, können Sie ThreadMXBean verwenden:
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
ThreadInfo[] infos = bean.dumpAllThreads(true, true);
for (ThreadInfo info : infos) {
StackTraceElement[] elems = info.getStackTrace();
// Print out elements, etc.
}
Wie bereits erwähnt, ist es viel einfacher, wenn Sie nur den Stack-Trace des aktuellen Threads haben wollen - verwenden Sie einfach Thread.currentThread().getStackTrace()
;
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.