非常に多くの goroutine があるため、すべての goroutine ではなく、パニックに陥る (そしてその後死ぬ) ルーチンのスタック トレースのみを go アプリケーションに出力させる方法があるかどうかを知りたいだけです。
これを行うために実行またはビルドするために渡すことができる何らかの形式のフラグがあると思いますが、それを見つけることができないようです。
どんな助けでも大歓迎です。
非常に多くの goroutine があるため、すべての goroutine ではなく、パニックに陥る (そしてその後死ぬ) ルーチンのスタック トレースのみを go アプリケーションに出力させる方法があるかどうかを知りたいだけです。
これを行うために実行またはビルドするために渡すことができる何らかの形式のフラグがあると思いますが、それを見つけることができないようです。
どんな助けでも大歓迎です。
デバッグ目的で既存のコードを (デバッグ目的で) 変更しながら、遅延関数で runtime.Stackを使用して (テストされていない) 試してみます。
const debug = true //TODO turn off for production
func MyPotentiallyPanickingGoroutine() {
if debug {
buf := make([]byte, 1<<16)
defer func() {
fmt.Printf("%s\n", runtime.Stack(buf, false))
}()
}
// existing code follows
}