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")
```