アプローチを使用せずに Visual Studio パッケージからIDebugEngine2
( MSDN )のリストまたは特定のインスタンスを取得することは可能ですか? IVsLoader
通常、ほとんどのサービスはGetService
、直接または他のサービスを通じて利用できると思います。しかし、デバッグ エンジンを提供できるものを簡単に見つけることができません。
あなたはそれで何をしようとしていますか?デバッガー インターフェイスは非常に脆弱です。多くの場合、デバッガー インターフェイスを使用してアクションを実行する方法は 2 つ、3 つ、またはそれ以上ありますが、特定の DE 実装ではそのうちの 1 つしかサポートされていません。デバッグ エンジンの実装者は、Visual Studio 自体以外の場所からのデバッグ エンジン インターフェイスへの直接呼び出しを期待していません。また、それを試みた場合にデバッガーの機能が壊れるリスクは、非常に高く保証されている間のどこかにあります。
たとえば、DE にプロセスを起動および/またはアタッチするように指示する潜在的な方法のいくつかを次に示します。
IDebugEngineLaunch2.LaunchSuspended
IDebugPortEx2.LaunchSuspended
IDebugProgramEx2.Attach
IDebugProgramNode2.Attach_V7
IDebugProgramNodeAttach2.OnAttach
IDebugEngine2.Attach
IVsDebuggableProjectCfg.DebugLaunch
VsShellUtilities.LaunchDebugger
IVsDebugger2.LaunchDebugTargets
IVsDebugger2.LaunchDebugTargets2
編集 1:私のJava デバッガーの場合、デバッグ エンジンはセッション マネージャーによって次のスタックで作成されます。
IVsDebugger2.LaunchDebugTargets2
IDebugProgramProvider2.WatchForProviderEvents
IDebugProgram2
のコピーがコンストラクターに渡されます)、私のコードは呼び出しますIDebugProcess2
IDebugDefaultPort2
WatchForProviderEvents
IDebugProgram2
IDebugPortNotify2.AddProgramNode