デバッガで必要な機能もう1つ。ブレークポイントですね。 これは x86 CPU のデバッグレジスタを利用して実装します。 まず仕掛け。 void SetBreakPoint( HANDLE hThread, DWORD dwAddress ) { CONTEXT ctx = { CONTEXT_DEBUG_REGISTERS }; GetThreadContext( hThread, &ctx ); ctx.Dr0 = dwAddress; ctx.Dr7 |= 0x00000001; SetThreadContext( hThread, &ctx ); } Dr0, Dr1, Dr2, Dr3 と、4つのブレークポイントを仕掛けることが出来ます。 Dr7 はコントロール用のレジスタで、下位16bitで有効・無効を切り替え、上位16bitで用法を決めます。 まず下位16bit。Dr0〜Dr