cursed instrument

Windows 2000 には存在しなくて Windows XP 以降に追加されたデバッグ API ですが,例えば次のようなものがあります.

  • CheckRemoteDebuggerPresent
  • DebugActiveProcessStop
  • DebugBreakProcess
  • DebugSetProcessKillOnExit

DebugActiveProcessStop なんかはおもしろくて,Windows XP より前の Windows OS では一度デバッガをアタッチすると,対象の(ユーザモード)プロセスを終了する以外にデタッチする方法がありませんでした.こんな仕様があるために Visual Studio .NET は DebugActiveProcessStop 未対応の OS では Visual Studio Debugger Proxy Service という中間層を作成し,この層に対して論理的にアタッチ/デタッチを行っています.こういった OS の違いの影響を受け易そうな領域は開発もテストも大変そうですね.そういえば DirectX SDK も Shader Debugger や PIX for Windows などデバッガ的なツールを含んでいます.こういったツールの動作検証が大変だったというのも理由のひとつかもしれませんね.Windows 2000 がサポート外になったことの.