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

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

Barbara Streisand
リリース: 2024-12-03 09:31:14
オリジナル
433 人が閲覧しました

How Can I Detect if the GoLand Debugger is Running in My Go Program?

プログラム内で GoLand デバッガーの実行を検出する方法

マネージ言語でデバッグしているときに、特定のタイミング動作を無効にしたり、別のコード パスを実行したりすることが必要になる場合があります。 C# では、この目的のために System.Diagnostics.Debugger.IsAttached が提供されています。しかし、Go でこれを行うにはどうすればよいでしょうか?

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 サイトの他の関連記事を参照してください。

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