none
CDB.EXEのデタッチ仕様について RRS feed

  • 質問

  • このフォーラムが適切かどうか判断できませんでしたが、下記、ご存知でしたらご教授下さい。

    Debugging Tools for Windowsに含まれるコンソールデバッガ「CDB.EXE」は、Windows2000上ではデタッチ終了出来ないようなのですが(つまり、デバッガ終了時にはアタッチしているプロセスと共に終了する)、Windows2003上ではデタッチ終了が可能(qdや、-pdを利用出来る)なようです。
    HELPを見ても、そのような仕様が記載されていました(NT/2000だけ出来ません、という旨の記載有り)。

    デタッチ終了出来ないのは、CDBが侵入モードでアタッチしているプロセスに対してスレッドを作成するがゆえ、デバッガ終了時にはスレッドを強制終了せねばならず、そのためプロセスも強制終了せざるを得なかったからなのだろう・・・と判断していましたが、何故2003上では可能となったのでしょうか?

    別の理由があるのか、私の推測がそもそも見当違いだったのか、ご意見だけでも結構ですので伺わせて下さい。
    よろしくおねがいします。

    2007年8月7日 9:42

すべての返信

  •  @UZ さんからの引用

    HELPを見ても、そのような仕様が記載されていました(NT/2000だけ出来ません、という旨の記載有り)。

     

    被デバッグプロセスを終了することなくデバッガをデタッチする機能は,Windows XP 以降のカーネルの機能です.2000 以前でこれができないのは仕様です.

     

    .NET&Windows プログラマのためのデバッグテクニック徹底解説』の以下の章で言及されています.

    • 4.1.1 ユーザーモードデバッガ
    • 7.4.5 Windows 2000 プロセスからのデタッチ
    2007年8月7日 10:54
  • 回答ありがとうございました。

    確かに、XP上でもデタッチ可能でした。
    詳細につきましては、紹介された書物を参照してみたいと思います。

    また何かありましたら宜しくお願いします。
    2007年8月8日 3:18