フッターコンテンツにスキップ
Iron Academy Logo
C#ツールと生産性

C# における高度なブレークポイントとトレースポイント

Tim Corey
22分36秒

デバッグは、開発者のワークフローに不可欠な要素です。 複雑なC#プロジェクトでは、コードを書くだけでなく、バグを効率的に見つけて解決することも重要です。 そこで、高度なブレークポイント技術が活躍します。

動画"Advanced Breakpoints and Tracepoints in C#"では、ティム・コーリーがVisual Studioデバッガを最大限に活用する方法を説明します。 ほとんどの開発者は基本的なブレークポイントに慣れていますが、このセッションではより深く掘り下げ、条件付きブレークポイントトレースポイントアクションのような機能が、問題をより迅速かつ効率的に診断するのに役立つことを示します。 Timは、これらの高度なツールにアクセスしやすく、日常的な開発に実用的であるように、すべてを明確に説明します。 始めましょう!

開発におけるデバッグの役割

ティムはまず、開発者の仕事の大部分は、アプリに忍び込む問題(バグ)の修正であることを強調します。効率的なデバッグは迅速な進捗を意味し、Visual Studioのツールセットはそのプロセスを合理化する高度なテクニックを提供します。

ブレークポイントとは何ですか?

最も単純なC#ブレークポイントは、コードファイルの左端をクリックして挿入します。実行がその行に達すると、一時停止します。 これにより、現在のランタイムコンテキストを検査し、変数を表示し、コードをステップスルーし、舞台裏で何が起こっているかを正確に理解することができます。 ティムは、多くの開発者がこの基本的な機能を使いこなしている一方で、その先に豊かな世界があり、それが使われていないことが多いと指摘する。

トレースポイントと出力ウィンドウへのロギング

Timは、ガターを右クリックし、ドロップダウンメニューから選択してTracepointを挿入する方法を説明します。 トレースポイントは、実行を一時停止しない代わりに、次のようなメッセージを出力ウィンドウに記録します:

iの値は{i}です。

変数を中括弧で囲むと、その値が出力されます。 これは、continueを何度も押すことなくループを可視化したい場合に非常に便利です。 これは、ログステートメントを使用することに似ていますが、メソッドにハードコードされるのではなく、デバッガーインターフェースを介して管理されます。 Timはまた、オプションで一時停止または継続するためにこのアクションを設定する方法を示しています。

一時ブレークポイント:ワンアンドドンのデバッグ

次にTimは、小さな時計のアイコンで簡単に認識できる一時的なブレークポイントの作成方法を紹介します。 実行中にヒットすると、自動的に無効になります。 これは、あるステートメントが一度だけ到達したことを確認する必要がある場合に便利で、デバッグ・セッションのノイズを減らすのに役立ちます。 ブレークポイントを削除することなく、有効にしたり無効にしたりすることで、デバッグビューを柔軟に制御することができます。

式による条件付きブレークポイント

このセクションでは、おそらく最も強力な機能の1つである条件付きブレークポイントについて説明します。 Tim は、i > 10 という条件を使用して 1 つを設定します。これは、式が真と評価されたときにのみブレークポイントがトリガされることを意味します。 ブレークポイントのプロパティ・ボックスでは、次のような条件を選択できます:

  • ヒット数

  • 表現

  • フィルター

これらのツールは、ブレークポイントにきめ細かなロジックを適用し、意味のある条件が満たされたときにのみ一時停止することを保証します。 これは、長いループやコードの動作の異常を検査するときに特に役立ちます。

依存ブレークポイント:デバッグ ロジックのリンク

あるブレークポイントが別のブレークポイントにヒットした後にのみトリガーされる必要がある場合、ティムは依存ブレークポイントの使用を提案します。 これは、マルチスレッド・アプリや複雑なモジュールの相互作用で、あるメソッドのインスタンスが、事前の条件が満たされた後に初めておかしくなるような場合に最適です。

ブレークポイントの設定では、関数名を選択し、その関数に到達した場合にのみ有効な別のブレークポイントを設定する方法を紹介します。 これにより、プロジェクト内のフォローアップ・ロジックが、以前の動作がそれを必要としない限り検査されないようになり、デバッガーを集中的かつ効率的に保つことができます。

ブレークポイント ウィンドウと複数のブレークポイントの管理

Tim は、Debug > Windows > Breakpoints または Ctrl + Alt + B でブレークポイントウィンドウを開きます。 このウィンドウは、プロジェクト内のすべてのアクティブなブレークポイントを一覧表示し、次のようなツールを提供します:

  • エクスポート/インポート:ブレークポイントを XML ファイルとして保存し、再利用可能なデバッグ設定を作成します。

  • ラベル付け:test "や "demo "などのラベルを付けて、目的別に分類します。

  • グループ化:ブレークポイントを "クリティカルエラー "や "ノーマルフロー "などのグループに割り当てます。グループ全体を有効または無効にできるので、さまざまな評価シナリオをこなすときに便利です。

Timはまた、デフォルトのグループを設定し、新しいブレークポイントが自動的にそのコンテキストに加わるようにする方法も示しています。

名前による関数ブレークポイント

メソッドがどこで定義されているかに関係なく、メソッドの呼び出しでブレークしたい場合はどうすればよいでしょうか? そこで、ファンクション・ブレークポイントの出番です。 Timは、関数名PrintInfoを入力し、このメソッドのどのバージョンが呼び出された場合でも、それがどこに存在するかに関係なく、たとえ異なるファイルやDLLであっても、デバッガがどのようにトリガされるかを示します。

これは、オーバーロードの多いメソッドのデバッグや、複数のコンテキストで使用される共有メソッド名を持つVisual Studio Codeプロジェクトに最適です。

値が変更されたときにブレークする:高度なウォッチポイント

ビデオの最後のほうで、Timはニッチだが強力な機能である、値が変更されたときのブレークについて触れている。 Localsウィンドウで変数を右クリックして、このオプションを選択できます。 しかし、それは限られた状況でしか機能しません。典型的には、クラス・インスタンス内のマネージド・ヒープ上のトラッキング・プロパティです。

システム制限が適用されます:

  • x64アーキテクチャ:追跡可能な変数は4つまで。

  • ARM64:2つ。

  • ARM32: 1つだけ。

このハードウェア・レベルのトラッキングは、変数の状態がいつ変化するかを深く可視化しますが、このような制約のために使用されることはほとんどありません。

最終的な考え

最後にTimは、Visual Studioの高度なデバッグ・ツールを使いこなすことで、より速く、より効果的な開発者になれるという重要なポイントを繰り返し説明します。 トレースポイントから条件付きブレークポイントまで、変数の上にカーソルを置くことからデバッグビューの使用まで、これらのツールはすべて、自信を持ってバグに取り組むのに役立ちます。

結論

Visual Studio のブレークポイントに関する Tim Corey 氏の完全な動画を歩くことで、デバッグのワークフローを改善するためにこれらのツールをどのように活用すればよいかを詳細に理解することができます。 すべてのバグは解決できます-適切なデバッガー戦略が必要なだけです。

Hero Worlddot related to C# における高度なブレークポイントとトレースポイント
Hero Affiliate related to C# における高度なブレークポイントとトレースポイント

好きなことを共有することで収入を増やす

.NET、C#、Java、Python、またはNode.jsを使用する開発者向けのコンテンツを作成しますか?あなたの専門知識を副収入に変えましょう!

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね