セッション デバッグ マネージャー (SDM) は、任意の数のマシン間で複数のプロセス内の任意の数のプログラムをデバッグしている任意の数のデバッグ エンジン (DE) を管理します。 SDM は、デバッグ エンジン マルチプレクサーであることに加えて、デバッグ セッションの統合ビューを IDE に提供します。
セッション デバッグ マネージャーの操作
セッション デバッグ マネージャー (SDM) が DE を管理します。 1 つのマシンで複数のデバッグ エンジンを同時に実行できます。 DEs を多重化するために、SDM は複数のインターフェイスを DEs からラップし、1 つのインターフェイスとして IDE に公開します。
パフォーマンスを向上させるために、一部のインターフェイスは多重化されません。 代わりに、これらは DE から直接使用され、これらのインターフェイスへの呼び出しは SDM を経由しません。 たとえば、メモリ、コード、およびドキュメント コンテキストで使用されるインターフェイスは、特定の DE によってデバッグされた特定のプログラム内の特定の命令、メモリ、またはドキュメントを参照するため、多重化されません。 そのレベルの通信に他の DE を関与させる必要はありません。
これはすべてのコンテキストに当てはまるわけではありません。 式評価コンテキスト インターフェイスの呼び出しは、SDM を経由します。 式の評価中、SDM は IDE に提供する IDebugExpression2 インターフェイスをラップします。これは、その式が評価されるときに、同じスレッドで実行されている可能性がある同じプロセスでプログラムをデバッグする複数の IDE が含まれる可能性があるためです。
通常、SDM は委任メカニズムとして機能しますが、ブロードキャスト メカニズムとして機能する場合があります。 たとえば、式の評価中、SDM は、指定されたスレッドでコードを実行できることをすべての DEs に通知するブロードキャスト メカニズムとして機能します。 同様に、SDM は停止イベントを受信すると、実行を停止する必要があるプログラムにブロードキャストします。 ステップが呼び出されると、SDM はプログラムに対して実行を継続できることを知らせます。 ブレークポイントは、すべてのDEに対しても送信されます。
SDM は、現在のプログラム、スレッド、またはスタック フレームを追跡しません。 プロセス、プログラム、スレッドの情報は、特定のデバッグ イベントと共に SDM に送信されます。