Share via


実装とトレースの概要

更新 : 2007 年 11 月

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

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

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

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

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

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

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

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

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

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

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

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

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

コードのトレースの段階

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

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

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

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

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

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

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

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

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

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

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

トレースの出力

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

トレース情報は、少なくとも既定の Trace 出力対象である DefaultTraceListener に必ず書き込まれます。なんらかの理由によって、ほかのリスナを Listeners コレクションに追加せずに DefaultTraceListener を削除してしまった場合は、トレース情報を受け取れません。詳細については、「トレース リスナ」を参照してください。

トレース情報の書き込みを行う 6 つの Debug メンバおよび Trace メソッドを次の表に示します。

メソッド

出力

Assert

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

Fail

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

Write

指定されたテキスト。

WriteIf

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

WriteLine

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

WriteLineIf

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

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

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

x5952w0c.alert_note(ja-jp,VS.90).gifVisual Basic メモ :

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

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

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

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

参照

処理手順

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

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

概念

トレース スイッチ

トレース リスナ

その他の技術情報

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