...

パッケージ debug

import "runtime/debug"
概要
目次

概要 ▾

debug パッケージは,プログラムを実行中に,自分自身をデバッグするための機能を含んでいます。

func FreeOSMemory 1.1

func FreeOSMemory()

FreeOS メモリは,ガベージコレクションを強制した後,可能な限り多くのメモリをオペレーティングシステムに返そうとします。 (これが呼び出されなくても,ランタイムはバックグラウンドタスクで徐々にメモリをオペレーティングシステムに返します。)

func PrintStack

func PrintStack()

PrintStack は, runtime.Stack によって返されたスタックトレースを標準エラーに出力します。

func ReadGCStats 1.1

func ReadGCStats(stats *GCStats)

ReadGCStats は,ガベージコレクションに関する統計を統計に読み込みます。 一時停止履歴のエントリ数はシステムによって異なります。 stats.Pause スライスは十分に大きい場合は再利用され,それ以外の場合は再割り当てされます。 ReadGCStats は stats.Pause スライスの全容量を使用できます。 stats.PauseQuantiles が空でない場合, ReadGCStats は一時停止時間の分布を要約した分位数でこれを埋めます。 たとえば, len(stats.PauseQuantiles) が 5 の場合,最小, 25%, 50%, 75%,最大の一時停止時間で埋められます。

func SetGCPercent 1.1

func SetGCPercent(percent int) int

SetGCPercent は,ガベージコレクションのターゲットパーセンテージを設定します。 コレクションは,前のコレクションがこのパーセンテージに達した後に残っている,ライブデータに対する新しく割り当てられたデータの比率がトリガーされたときにトリガーされます。 SetGCPercent は前の設定を返します。 初期設定は,起動時の GOGC 環境変数の値,または変数が設定されていない場合は 100 です。 負のパーセンテージはガベージコレクションを無効にします。

func SetMaxStack 1.2

func SetMaxStack(bytes int) int

SetMaxStack は, 1 つのゴルーチンスタックで使用できる最大メモリ量を設定します。 スタックを拡張している間にいずれかのゴルーチンがこの制限を超えると,プログラムはクラッシュします。 SetMaxStack は前の設定を返します。 初期設定は 64 ビットシステムでは 1 GB , 32 ビットシステムでは 250 MB です。

SetMaxStack は,無限再帰に入るゴルーチンによって与えられるダメージを制限するために主に役に立ちます。 将来のスタックの成長を制限するだけです。

func SetMaxThreads 1.2

func SetMaxThreads(threads int) int

SetMaxThreads は, Go プログラムが使用できるオペレーティングシステムスレッドの最大数を設定します。 これ以上使用しようとすると,プログラムはクラッシュします。 SetMaxThreads は前の設定を返します。 初期設定は 10,000 スレッドです。

制限は,ゴルーチンの数ではなく,オペレーティングシステムのスレッドの数を制御します。 Go プログラムは,ゴルーチンの実行準備ができているが,既存のすべてのスレッドがシステムコール, cgo コールでブロックされている,または runtime.LockOSThread の使用により他のゴルーチンにロックされている場合にのみ新しいスレッドを作成します。

SetMaxThreads は,無制限の数のスレッドを作成するプログラムによるダメージを制限するために主に役立ちます。 これは,オペレーティングシステムを停止する前にプログラムを停止するという考えです。

func SetPanicOnFault 1.3

func SetPanicOnFault(enabled bool) bool

SetPanicOnFault は,プログラムが予期しない (nil 以外の) アドレスでエラーが発生したときのランタイムの動作を制御します。 このような障害は通常,ランタイムメモリの破損などのバグによって引き起こされるため,デフォルトのレスポンスではプログラムがクラッシュします。 メモリマップファイルを扱うプログラムやメモリの安全でない操作はそれほど劇的ではない状況で nil 以外のアドレスでフォルトを引き起こすかもしれません。 SetPanicOnFault はそのようなプログラムがランタイムがクラッシュではなくパニックだけを引き起こすようにリクエストすることを可能にします。 SetPanicOnFault は現在のゴルーチンにのみ適用されます。 以前の設定が返却値です。

func SetTraceback 1.6

func SetTraceback(level string)

SetTraceback は,回復不能なパニックまたは内部ランタイムエラーのために終了する前に,それが出力するトレースバック内のランタイムによって表示される詳細の量を設定します。 level 引数は GOTRACEBACK 環境変数と同じ値を取ります。 例えば, SetTraceback("all") は,プログラムがクラッシュしたときにすべてのゴルーチンを表示するようにします。 詳細はパッケージのランタイムドキュメントを参照してください。 SetTraceback が環境変数より低いレベルで呼び出された場合,呼び出しは無視されます。

func Stack

func Stack() []byte

Stack はそれを呼び出したゴルーチンのフォーマットされたスタックトレースを返します。 トレース全体をキャプチャするのに十分な大きさのバッファで runtime.Stack を呼び出します。

func WriteHeapDump 1.3

func WriteHeapDump(fd uintptr)

WriteHeapDump は,ヒープとその中のオブジェクトの説明を指定されたファイル記述子に書き込みます。

WriteHeapDump は,ヒープダンプが完全に書き込まれるまで,すべてのゴルーチンの実行を中断します。 したがって,ファイル記述子は,もう一方の端が同じ Go プロセス内にあるパイプまたはソケットに接続してはいけません。 代わりに,一時ファイルまたはネットワークソケットを使用してください。

ヒープダンプフォーマットは https://golang.org/s/go15 ヒープ dump で定義されています。

type BuildInfo 1.12

BuildInfo は,実行中のバイナリから読み取られたビルド情報を表します。

type BuildInfo struct {
    Path string    // メインパッケージパス
    Main Module    // メインモジュール情報
    Deps []*Module // モジュールの依存関係
}

func ReadBuildInfo 1.12

func ReadBuildInfo() (info *BuildInfo, ok bool)

ReadBuildInfo は,実行中のバイナリに埋め込まれているビルド情報を返します。 この情報は,モジュールサポート付きでビルドされたバイナリでのみ利用可能です。

type GCStats 1.1

GCStats は最近のガベージコレクションに関する情報を収集します。

type GCStats struct {
    LastGC         time.Time       // 最後の収集の時間
    NumGC          int64           // ガベージコレクション数
    PauseTotal     time.Duration   // すべてのコレクションの合計休止時間
    Pause          []time.Duration // 一時停止履歴,最新のものが初めにある
    PauseEnd       []time.Time     // 一時停止終了時刻履歴,最新のものが初めにある; added in Go 1.4
    PauseQuantiles []time.Duration
}

type Module 1.12

Module はモジュールを表します。

type Module struct {
    Path    string  // モジュールパス
    Version string  // モジュールバージョン
    Sum     string  // チェックサム
    Replace *Module // このモジュールに置き換え
}