マネージ言語でデバッグしているときに、特定のタイミング動作を無効にしたり、別のコード パスを実行したりすることが必要になる場合があります。 C# では、この目的のために System.Diagnostics.Debugger.IsAttached が提供されています。しかし、Go でこれを行うにはどうすればよいでしょうか?
Go には Debugger.IsAttached に直接相当するものはありませんが、ビルド タグを使用してデバッガの存在を間接的に検出できます。 .
ステップ 1: 2 つのヘルパーを作成するファイル
isdelve/delve.go (デバッグが有効な場合):
// +build delve package isdelve const Enabled = true
isdelve/nodelve.go (デバッグが有効でない場合)有効:
// +build !delve package isdelve const Enabled = false
ステップ 2: メイン プログラムのビルド タグを確認する
import ( "fmt" "isdelve" ) func main() { fmt.Println("Debugging:", isdelve.Enabled) }
ステップ 3: GoLand で Goland
を構成する「実行/デバッグ構成」ウィンドウの「Go ツール引数」に次を追加します。
-tags=delve
Goland でデバッグする場合、Enabled は true に設定されます。それ以外の場合は false になります。
ステップ 4: DLV を使用する代替方法
dlv を直接使用したい場合は、次を使用します。
dlv debug --build-flags='-tags=delve' a.go
これにより、Enabled が true に設定されます。
ステップ 5: 動的変数の設定
次のように、dlv コマンドを使用して、デバッガの起動後に変数を手動で設定することもできます。
> set enabled true
これにより、グローバルに有効な変数が設定されます。コードをチェックインしてください。
以上がGo プログラムで GoLand デバッガーが実行されているかどうかを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。