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

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

Barbara Streisand
リリース: 2024-11-27 07:34:14
オリジナル
503 人が閲覧しました

How Can I Detect if a Go Program is Running Under a Debugger (e.g., GoLand)?

Go でのデバッガ実行の決定: デバッグ可能なフラグの探索

プログラミングの分野では、プログラムがデバッガの監視下で実行されているかどうかを識別することが望ましいことがよくあります。 C# では、System.Diagnostics.Debugger.IsAttached を使用してこれを簡単に実現できます。しかし、Go では、特に GoLand デバッガーを使用する場合はどうでしょうか?

デバッグ フラグの探索

Go では、デバッガーの実行を識別するのは C# ほど簡単ではありません。ただし、賢明なアプローチには、ビルド タグを利用してデバッグ モードと非デバッグ モードを区別することが含まれます。 dlv の実行時に --build-flags 引数を利用すると、特定のタグを渡してデバッガーの存在を測定できます。

Delve による実装

このアプローチを実装するには、2つのGoソースを作成しますファイル:

  • isdelve/delve.go: Delve デバッガーがアクティブであることをプログラムが識別できるようにするビルド タグが含まれています。
  • isdelve/nodelve.go: のビルド タグが含まれています。非デバッグ モード。

これらのタグは、 isdelve パッケージは true (デバッグ モード) または false (非デバッグ モード) です。

メインの Go プログラムで、isdelve パッケージをインポートし、Enabled 定数をチェックしてデバッグ ステータスを確認します。

GoLand での設定

GoLand でこの機能を有効にするには、 「実行/デバッグ構成」に移動し、「Go ツールの引数」に -tags=delve を追加します。これにより、デバッグ フラグを使用してビルドするようにプログラムが構成されます。

外部デバッグ モード

非 GoLand 環境では、dlv debug --build-flags='-tags= を使用します。 delve' a.go は、指定されたデバッガーを呼び出します。 tags.

追加の代替手段

代替アプローチには、デバッガーの開始後に delve の set コマンドを使用して変数を手動で設定することが含まれます。これにより、特定のシナリオで柔軟性が向上します。

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

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