Avatar ·

Wie erhalte ich einen Stacktrace aller Goroutinen in Go zum Debuggen

Hallo! Ich schreibe eine Multithread-Anwendung in Go, die viele Goroutinen verwendet. Irgendwann beginnt das Programm instabil zu laufen – es hängt sich auf oder gibt seltsame Fehler aus. Ich vermute, dass das Problem ein Deadlock (gegenseitige Blockierung) oder ein Goroutine-Leck (wenn sie erstellt, aber nicht beendet werden) ist. Ich muss verstehen, welche Goroutinen gerade arbeiten und an welchen Codezeilen sie angehalten sind. Ich weiß, dass man in Java `jstack` oder `Thread.getAllStackTraces()` verwenden kann, aber in Go habe ich kein Äquivalent gefunden. Zum Beispiel habe ich diesen Code: ```go package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() time.Sleep(10 * time.Second) fmt.Println("goroutine 1 done") ```