Avatar ·

Cómo obtener el stacktrace de todas las goroutines en Go para depuración

¡Hola! Estoy escribiendo una aplicación multihilo en Go que usa muchas goroutines. En algún momento, el programa comienza a funcionar de manera inestable: a veces se congela, a veces da errores extraños. Sospecho que el problema es un deadlock o una fuga de goroutines (cuando se crean pero no terminan). Necesito entender qué goroutines están funcionando ahora y en qué líneas de código se detuvieron. Sé que en Java se puede usar `jstack` o `Thread.getAllStackTraces()`, pero en Go no encontré un análogo. Por ejemplo, tengo este código: ```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") }() go func() { defer wg.Done() time.Sleep(5 * time.Second) fmt.Println("goroutine 2 done") }() wg.Wait() } ``` ¿Cómo puedo en runtime (o al ocurrir un panic) imprimir el stacktrace completo para todas las goroutines?