ホームページ > バックエンド開発 > Golang > デバッグのために Go で現在の関数の名前を取得するにはどうすればよいですか?

デバッグのために Go で現在の関数の名前を取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-13 02:58:10
オリジナル
529 人が閲覧しました

How Can I Get the Current Function's Name in Go for Debugging?

デバッグ用の関数名を取得する方法

デバッグ機能を強化するには、現在の関数の名前を取得することが重要です。 gcc の FUNCTION マクロと同様に、Go はこの情報を取得するメカニズムを提供します。

次の関数を考えてみましょう:

func foo() {
    trace()
}
ログイン後にコピー

次のような情報を自動的に出力することを目指しています。 "Entering foo()...".

ランタイム パッケージは、必要な機能:

import "fmt"

func trace() {
    pc := make([]uintptr, 10)  // At least one entry required
    runtime.Callers(2, pc)

    // Get the function associated with the program counter
    f := runtime.FuncForPC(pc[0])

    // Obtain the file name, line number, and function name
    file, line := f.FileLine(pc[0])
    fmt.Printf("%s:%d %s\n", file, line, f.Name())
}
ログイン後にコピー

このスクリプトでは、呼び出し元は、呼び出し元の関数に関連付けられたプログラム カウンターを PC スライスに設定します。次に、FuncForPC を使用して、スライス内の最初のプログラム カウンターに関連付けられた関数を取得します。最後に、FileLine はファイル名、行番号、関数名を提供し、コンソールに出力します。

以上がデバッグのために Go で現在の関数の名前を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート