डिबगिंग के लिए Go में सभी गोरूटीन का स्टैक ट्रेस (stacktrace) कैसे प्राप्त करें
नमस्ते! मैं Go में एक मल्टीथ्रेडेड एप्लिकेशन लिख रहा हूँ जो बहुत सारी गोरूटीन का उपयोग करता है। किसी बिंदु पर प्रोग्राम अस्थिर रूप से काम करना शुरू कर देता है — कभी हैंग हो जाता है, तो कभी अजीब त्रुटियाँ देता है। मुझे संदेह है कि समस्या deadlock (आपसी ब्लॉकिंग) या गोरूटीन लीक (जब वे बनती हैं लेकिन समाप्त नहीं होती) में है।
मुझे यह समझने की आवश्यकता है कि वर्तमान में कौन सी गोरूटीन काम कर रही हैं और वे कोड की किन पंक्तियों पर रुकी हैं। मुझे पता है कि Java में `jstack` या `Thread.getAllStackTraces()` का उपयोग किया जा सकता है, लेकिन Go में मुझे इसका कोई विकल्प नहीं मिला।
उदाहरण के लिए, मेरे पास ऐसा कोड है:
```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")
```