Распечатать всю трассировку стека всех потоков, работающих в настоящее время в Java - PullRequest
1 голос
/ 17 июня 2020

Я хочу вывести все трассировки стека всех потоков, запущенных в настоящее время в процессе Java, на стандартный вывод, чтобы отладить тупиковую ситуацию на моем сервере.

1 Ответ

0 голосов
/ 17 июня 2020

Вот код, вы можете скопировать и вставить тело функции и использовать его без какого-либо импорта.

class HelloWorld {
public static void main(String[] args) {
    java.util.Collection<java.lang.StackTraceElement[]> a1 = java.lang.Thread.getAllStackTraces().values();
    for (java.lang.StackTraceElement[] a2 : a1){
        System.out.println("==========");
        for (java.lang.StackTraceElement a3 : a2){
            System.out.println(a3.toString());
        }
    }
}
}

Приведенный выше код был протестирован на:

openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~18.04-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...