import java.util.Map;

public class Traces {
    public static void main(String[] args) {
        // Récupération de toutes les piles d'appels des threads
        Map<Thread, StackTraceElement[]> allStackTraces = Thread.getAllStackTraces();

        // Parcours des threads et affichage des informations
        for (Map.Entry<Thread, StackTraceElement[]> entry : allStackTraces.entrySet()) {
            Thread thread = entry.getKey();
            StackTraceElement[] stackTrace = entry.getValue();

            // Affichage du nom du thread
            System.out.println(thread.getName() + " :");

            // Affichage de chaque élément de la pile d'appels
            for (StackTraceElement element : stackTrace) {
                System.out.println("  " + element);
            }

            System.out.println(); // Ligne vide pour séparer les threads
        }
    }
}
