Avatar ·

डिबगिंग के लिए Go में सभी गोरूटीन का स्टैक ट्रेस (stacktrace) कैसे प्राप्त करें

नमस्ते! मैं Go में एक मल्टी-थ्रेडेड एप्लिकेशन लिख रहा हूं जो बहुत सारी गोरूटीन का उपयोग करता है। किसी बिंदु पर प्रोग्राम अस्थिर रूप से काम करना शुरू कर देता है - कभी हैंग हो जाता है, तो कभी अजीब एरर देता है। मुझे संदेह है कि समस्या deadlock (आपसी ब्लॉकिंग) या गोरूटीन लीक (जब वे बनती हैं लेकिन समाप्त नहीं होतीं) में है।\n\nमुझे यह समझने की जरूरत है कि वर्तमान में कौन सी गोरूटीन काम कर रही हैं और वे कोड की किन लाइनों पर रुकी हैं। मुझे पता है कि Java में `jstack` या `Thread.getAllStackTraces()` का उपयोग किया जा सकता है, लेकिन Go में मुझे इसका कोई विकल्प नहीं मिला।\n\nउदाहरण के लिए, मेरे पास ऐसा कोड है:\n\n```go\npackage main\n\nimport (\n "fmt"\n "sync"\n "time"\n)\n\nfunc main() {\n var wg sync.WaitGroup\n wg.Add(2)\n\n go func() {\n defer wg.Done()\n time.Sleep(10 * time.Second)\n fmt.Println("goroutine 1 done")\n```