3

アプローチを使用せずに Visual Studio パッケージからIDebugEngine2( MSDN )のリストまたは特定のインスタンスを取得することは可能ですか? IVsLoader

通常、ほとんどのサービスはGetService、直接または他のサービスを通じて利用できると思います。しかし、デバッグ エンジンを提供できるものを簡単に見つけることができません。

4

2 に答える 2

2

あなたはそれで何をしようとしていますか?デバッガー インターフェイスは非常に脆弱です。多くの場合、デバッガー インターフェイスを使用してアクションを実行する方法は 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
  • の新しいインスタンスを作成した後( VS が渡された から取得されたIDebugProgram2のコピーがコンストラクターに渡されます)、私のコードは呼び出しますIDebugProcess2IDebugDefaultPort2WatchForProviderEventsIDebugProgram2IDebugPortNotify2.AddProgramNode
  • 環境がデバッグ エンジンのコンストラクターにコールバックする
于 2013-03-20T13:49:15.573 に答える