ホームページ >バックエンド開発 >Golang >GoLand デバッガーが Go プログラムにアタッチされているかどうかを検出するにはどうすればよいですか?

GoLand デバッガーが Go プログラムにアタッチされているかどうかを検出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-25 13:30:121008ブラウズ

How Can I Detect if the GoLand Debugger is Attached to a Go Program?

実行中のプログラムでの GoLand デバッガーの存在の検出

Go では、System.Diagnostics.Debugger.IsAttached を使用してデバッガーの存在を検出できる C# とは異なり、直接的に相当するものはありません。これに対処する 1 つの方法は、delve デバッガーでビルド タグを活用することです。

ビルド タグの使用

2 つ作成しますファイル:

  • isdelve/delve.go:
// +build delve

package isdelve

const Enabled = true
  • isdelve/nodelve.go:
// +build !delve

package isdelve

const Enabled = false

でメイン プログラムで、isdelve パッケージをインポートし、Enabled 定数を確認します。

import "isdelve"

func main() {
    fmt.Println("delve", isdelve.Enabled)
}

GoLand でのビルド タグの有効化

GoLand で、「Run/Debug Configurations」に移動し、「Go」でツール引数' に次を追加します:

-tags=delve

これで、GoLand でプログラムを実行すると、 delve ビルド タグを有効にして、isdelve.Enabled 定数にアクセスできるようにします。

delve の set コマンドを使用する

または、デバッガーの起動後に delve の set コマンドを使用して変数を設定します。

dlv debug a.go
(dlv) set debug.enabled true

以上がGoLand デバッガーが Go プログラムにアタッチされているかどうかを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。