ホームページ >バックエンド開発 >Golang >C# の `Debugger.IsAttached` のような GoLand デバッガーの添付ファイルを検出できますか?

C# の `Debugger.IsAttached` のような GoLand デバッガーの添付ファイルを検出できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-06 05:22:09903ブラウズ

Can Go Detect GoLand Debugger Attachment Like C#'s `Debugger.IsAttached`?

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

C# では、実行中のプログラムは、「System.Diagnostics.Debugger.IsAttached」メソッドを通じてデバッガーの監視下にあるかどうかを識別できます。 .

Go でも同様の機能を実現できますか?これは、コードのデバッグ中にタイムアウトを無効にする場合に特に望ましいです。

特に、この質問は GoLand デバッガーの使用のコンテキストで発生します。

解決策

使用建てるタグ:

  1. 2 つの Go ソース ファイル「isdelve/delve.go」と「isdelve/nodelve.go」を作成します。
  2. 「isdelve/delve」 .go」に次のビルドを追加しますタグ:

    // +build delve
  3. 「isdelve/nodelve.go」に、次のビルド タグを追加します:

    // +build !delve
  4. 「」を追加package isdelve」を両方のファイルに宣言し、「Enabled」を宣言します。定数:

    package isdelve
    
    const Enabled = true
    
    // or
    
    package isdelve
    
    const Enabled = false
  5. 「isdelve」パッケージをインポートする 3 番目の Go ファイル「a.go」を作成します:

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

設定中GoLand:

  1. GoLand で「実行/デバッグ構成」ウィンドウを開きます。
  2. 「Go ツール引数」に「-tags=delve」を追加します。

使用法:

  • GoLand の外部で "go run a.go" を実行すると、プログラムは "delve false" を報告します。
  • dlv を使用してデバッグする場合は、「dlv debug」を使用します--build-flags='-tags=delve' 行ってください。」これにより、「delve true」が報告されます。

代替:

あるいは、delve の "set" コマンドは、デバッガの起動後に手動で変数を設定できます。

以上がC# の `Debugger.IsAttached` のような GoLand デバッガーの添付ファイルを検出できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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