3

非常に多くの goroutine があるため、すべての goroutine ではなく、パニックに陥る (そしてその後死ぬ) ルーチンのスタック トレースのみを go アプリケーションに出力させる方法があるかどうかを知りたいだけです。

これを行うために実行またはビルドするために渡すことができる何らかの形式のフラグがあると思いますが、それを見つけることができないようです。

どんな助けでも大歓迎です。

4

1 に答える 1

0

デバッグ目的で既存のコードを (デバッグ目的で) 変更しながら、遅延関数で 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
}
于 2013-07-16T08:18:38.320 に答える