実装とトレースの概要

ここでの "実装" という用語は、製品のパフォーマンスのレベルを監視または測定し、エラーを診断する具体的な機能を意味しています。 プログラミングでは、組み込むアプリケーションの機能を指します。

  • コードのトレース - 実行時に、アプリケーションの実行状態について示すメッセージを受け取ります。

  • デバッグ - 開発中のアプリケーションのプログラミング エラーを追跡して修正します。 詳細については、「デバッグ」を参照してください。

  • パフォーマンス カウンター - アプリケーションのパフォーマンスを追跡するためのコンポーネントです。 詳細については、「.NET Framework のパフォーマンス カウンター」を参照してください。

  • イベント ログ - アプリケーションの実行中に発生した重要なイベントを受け取って追跡するためのコンポーネントです。 詳細については、EventLog クラスを参照してください。

Trace クラスおよび Debug クラスは、アプリケーションの開発中または配置後に、アプリケーションのパフォーマンスを追跡および検査する手段を提供します。 たとえば、(新しいデータベース接続の作成など) が配置されたアプリケーションの操作の特定の種類を追跡するために Trace クラスを使用すると、アプリケーションの効率を監視できるようになります。

コードのトレースとデバッグ

開発時に、Visual Studio 統合開発環境 (IDE) の出力ウィンドウにメッセージを表示するために Debug クラスの出力メソッドを使用できます。 たとえば、次のようになります。

Trace.WriteLine("Hello World!")
Debug.WriteLine("Hello World!")
System.Diagnostics.Trace.WriteLine("Hello World!");
System.Diagnostics.Debug.WriteLine("Hello World!");

これらの例では、デバッガーでアプリケーションを実行すると、出力ウィンドウに "Hello World!" と表示されます。

これにより、アプリケーションをデバッグし、テスト環境での動作に基づいてアプリケーションのパフォーマンスを最適化できます。 すべてのデバッグ出力を受け取ることがあります Debug の Condition 属性のデバッグ ビルドのアプリケーションをデバッグできます。 アプリケーションのリリースの準備が整ったら、コンパイラが最終的な実行可能ファイルにデバッグ コードを含めないように Debug の条件属性をオンにしないでリリース ビルドをコンパイルできます。 詳細については、「方法 : トレースとデバッグを指定して条件付きコンパイルを実行する」を参照してください。 アプリケーションのさまざまなビルド構成の詳細については、「Visual Studio でのアプリケーションのビルド」を参照してください。

Trace クラスのメソッドを使用してインストールされたアプリケーションのコード実行をトレースすることもできます。 コードに トレース スイッチ を配置することで、トレースが実行されるかどうかと、その対象範囲について、制御することができます。 これにより、運用環境におけるアプリケーションのステータスを監視できます。 複数のコンポーネントが複数のコンピューターで実行されるビジネス アプリケーションでは、この監視が特に重要です。 配置後のスイッチの機能は、構成ファイルで制御できます。 詳細については、「方法 : トレース スイッチを設定する」を参照してください。

トレースを使用するアプリケーションの開発時には、通常、アプリケーション コードにトレース メッセージとデバッグ メッセージの両方を組み込みます。 アプリケーションを配置する準備が整ったら、Debug 条件属性をオンにせずに、リリース ビルドをコンパイルできます。 ただし、Trace 条件属性をオンにして、コンパイラがトレース コードを実行可能ファイルに組み込むようにすることもできます。 詳細については、「方法 : トレースとデバッグを指定して条件付きコンパイルを実行する」を参照してください。

x5952w0c.collapse_all(ja-jp,VS.110).gifコードのトレースの段階

コードのトレースには、次の 3 つの段階があります。

  1. インストルメンテーション - トレース コードをアプリケーションに追加します。

  2. トレース - トレース コードが、指定された場所に情報を書き込みます。

  3. 分析 - トレース情報を分析して、アプリケーションの問題を識別および理解します。

既定の設定では、開発中は、すべてのデバッグ出力メソッドおよびトレース出力メソッドが、Visual Studio の出力ウィンドウに情報を書き込みます。 配置後のアプリケーションでは、メソッドは指定された場所にトレース情報を書き込みます。 トレースまたはデバッグの出力対象を指定する詳細については、「トレース リスナー」を参照してください。

トレースの実装および分散アプリケーション

分散アプリケーションを作成するときに、アプリケーションが使用される環境でテストをすることが難しい場合があります。 オペレーティング システムや Web ブラウザーのすべての組み合わせ (ローカライズ言語のすべてのケースも含む) をテストしたり、アプリケーションに同時にアクセスする最大ユーザー数をシミュレートしたりできる開発チームはほとんどありません。 このため、大量の情報、異なる設定、エンド ユーザー固有の動作などの要因に対して分散アプリケーションがどのように応答するかをテストすることはできません。 また、分散アプリケーションを構成する要素の大半には、直接対話したりこれらの構成要素の利用状況を表示したりするためのユーザー インターフェイスは備わっていません。

ただし、アプリケーションの "実装" (つまりコード内にトレース ステートメントを計画的に配置すること) によって、分散アプリケーションが特定のイベント、特に不当な動作をシステム管理者に説明できるようにすることにより補うことができます。 これにより、予測不可能な動作 (極度に遅い待機時間など) が実行時に発生した場合でも、原因を判断できます。

トレース ステートメントを使用すると、オリジナル ソース コードを検査、変更、および再コンパイルしたり、デバッグ環境で実行時エラーを生成したりするなど、困難なタスクを避けることができます。 アプリケーションの実装は、エラーの表示だけでなく、パフォーマンスを監視するためにも行うことができます。

トレース ステートメントの計画的な配置

実行時に使用するトレース ステートメントを配置するときには、十分に注意する必要があります。 考えられるすべてのトレース シナリオが適切に処理されるように、配置されるアプリケーションで必要とされるトレース情報を考慮する必要があります。 しかし、トレースを使用するアプリケーションは多岐にわたっており、トレースの計画的な配置にあたっての一般的なガイドラインはありません。 トレース ステートメントを配置する詳細については、「方法 : アプリケーション コードにトレース ステートメントを追加する」を参照してください。

トレースの出力

トレースの出力は "リスナー" と呼ばれるオブジェクトによって収集されます。 リスナーは、トレースの出力を受け取り、出力デバイス (通常は、ウィンドウ、ログ、またはテキスト ファイル) に書き込むためのオブジェクトです。 トレース リスナーが作成されると、Trace.Listeners のコレクションに追加され、すべてのトレース出力を受け取ることがリスナーを許可します。

トレース情報は、既定の Trace の出力対象、DefaultTraceListenerに少なくとも常に書き込まれます。 なんらかの理由 Listeners のコレクションに他のリスナーを追加せずに DefaultTraceListener を削除する場合、トレース メッセージは表示されません。 詳細については、「トレース リスナー」を参照してください。

トレース情報を書き込む TraceDebug の 6 種類のメンバーとメソッドを次の表に示します。

方法

出力

Assert

指定されたテキスト。何も指定されない場合は、呼び出し履歴。 Assert ステートメントの引数として指定された条件が false の場合にだけ、出力が書き込まれます。

失敗

指定されたテキスト。何も指定されない場合は、呼び出し履歴。

Write

指定されたテキスト。

WriteIf

指定されたテキスト。WriteIf ステートメントの引数として指定された条件が満たされた場合にだけ出力されます。

WriteLine

指定されたテキストおよびキャリッジ リターン。

WriteLineIf

指定されたテキストおよびキャリッジ リターン。WriteLineIf ステートメントの引数として指定された条件が満たされた場合にだけ出力されます。

Listeners のコレクションのすべてのリスナーは、上の表で説明したメッセージを受け取りますが、などのリスナーによって異なるメッセージを受け取るか実行される処理されることがあります。 たとえば、DefaultTraceListenerアサート失敗 に障害通知を受信し、TextWriterTraceListener は出力をストリームに単純に書き込むときにアサーションの追加ダイアログ ボックスが表示されます。

独自のリスナーを実装することにより、結果をカスタマイズできます。 たとえば、メッセージ ボックスにメッセージを表示するトレース リスナーや、データベースに接続してメッセージをテーブルに追加するトレース リスナーなどを実装できます。 すべてのカスタム リスナーは、前に示した 6 つのメソッドをサポートする必要があります。 開発者が定義するリスナーの作成については、「.NET Framework リファレンス」の「TraceListener」を参照してください。

Visual Basic メモVisual Basic メモ

Visual Basic 2005 では、以前のバージョンの Visual Basic で利用できた Debug.Print メソッドから Debug.WriteDebug.WriteIfDebug.WriteLine、および Debug.WriteLineIf の各メソッドに置き換えられました。

Write メソッドおよび WriteLine メソッドでは、必ず指定されたテキストが書き込まれます。 指定されたテキストを書き込むかどうかアサートWriteIfWriteLineIf はブール型の引数を必要とする;コントロール これらは式が true (WriteIfWriteLineIfの場合) か、または false を記述する場合にだけ、指定されたテキスト (アサートの場合)。 Fail メソッドでは、常に指定されたテキストが書き込まれます。 詳細については、「方法 : アプリケーション コードにトレース ステートメントを追加する」および「.NET Framework リファレンス」を参照してください。

セキュリティに関する注意事項

ASP.NET アプリケーションを配置する前にトレースとデバッグを無効にしないと、アプリケーションに関する情報が公開され、悪意を持ったプログラムによって利用される可能性があります。 詳細については、「方法 : トレースとデバッグを指定して条件付きコンパイルを実行する」、「Visual Studio でのアプリケーションのビルド」、および「方法 : トレース スイッチを設定する」を参照してください。 デバッグは、IIS (Internet Information Services) で設定することもできます。

参照

処理手順

方法 : アプリケーション コードにトレース ステートメントを追加する

方法 : トレース スイッチを設定する

概念

トレース スイッチ

トレース リスナー

その他の技術情報

アプリケーションのトレースとインストルメント