ホームページ  >  記事  >  バックエンド開発  >  VS Code を使用して Go 単体テストで競合する Protobuf 拡張機能をデバッグするにはどうすればよいですか?

VS Code を使用して Go 単体テストで競合する Protobuf 拡張機能をデバッグするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-27 06:52:29825ブラウズ

How can I debug conflicting Protobuf extensions in Go unit tests using VS Code?

フラグを使用した単体テストの実行とデバッグ: 競合する Protobuf 拡張機能への取り組み

VS Code 内で単体テストをデバッグする際、競合する Protobuf 拡張子を考慮した追加のフラグ。このガイドでは、シームレスなデバッグを可能にするこの問題の解決策を提供します。

VS Code settings.json の元の構成は、必要なフラグ '-ldflags "-X google.golang.org/protobuf/reflect を追加しようとします。 /protoregistry.conflictPolicy=warn"'。ただし、この構成では、VS Code がフラグを一重引用符で囲んだテスト コマンドを生成するときに問題が発生します。

これを解決するには、settings.json の構成を調整する必要があります。この変更により、フラグ値の前後の一重引用符が削除される必要があります:

"go.testFlags": [
    "-ldflags",
    "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]

この変更により、VS Code は、プロト拡張機能の競合に関連するエラーを引き起こすことなく、必要なフラグを適切に含むテスト コマンドを生成します。

VS Code インターフェイスを使用した特定のテストのデバッグは複雑であるため、デバッグには別のアプローチをお勧めします。特定のフラグを使用してテスト バイナリをコンパイルし、ヘッドレス デバッグに dlv を利用すると、より優れた制御と効率的なデバッグが可能になります。

テスト バイナリをコンパイルするには:

go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"

このコマンドは、必要な条件を備えたバイナリを生成します。デバッグ用のフラグ。エディタ接続のためにヘッドレス モードで dlv を接続するには:

dlv exec ./foo.test --headless --listen=:2345 --log --api-version=2 -- -count=1 -- $(pwd)/some/path

ここで、foo.test は生成されたバイナリ、-count=1 はテスト用のカスタム フラグを表し、$(pwd)/some/path は次のようになります。キュウリスタイルのテストに使用されます。エディターを dlv セッションに接続し、デバッグを開始します。

追加情報

Go には、インライン フラグを使用して dlv を起動する便利なメソッドも用意されており、Vim ユーザーには vim -go プラグインを使用すると、:GoDebugConnect 127.0.0.1:2345 のようなコマンドを使用してカスタム ブレークポイント設定と DLV 接続が可能になります。上記の手順に従うことで、開発者はフラグを使用して単体テストを効果的に実行およびデバッグでき、スムーズなテストとコードのメンテナンスが保証されます。

以上がVS Code を使用して Go 単体テストで競合する Protobuf 拡張機能をデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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