나는 최신 운영 시스템이 디버깅을 위해 api를 제공한다는 것을 알고 있습니다. 디버거 프로세스가 커널에게 다른 프로세스의 기계어 명령에 브레이크 포인트를 설정하도록 요청하면 커널은 명령의 첫 번째 바이트를 인터럽트를 발생시키는 opcode로 바꿉니다.소프트웨어 중단 점 및 최신 OOOE 프로세서
인터럽트 처리기는 프로세스를 중단하고 레지스터를 저장하고 디버깅 프로세스에 알립니다.
내가 이해할 수없는 것은 순서가 잘못된 실행 프로세서에서 정확하게 발생하는 것입니다. 인터럽트 명령은 선행 작업 이전이나 조상 작업 이후에 실행될 수 있으므로 인터럽트 발생시 레지스터와 메모리에 잘못된 값이 포함됩니다.
http://en.wikipedia.org/wiki/Memory_barrier seems related –
'커널은 명령의 첫 번째 바이트를 인터럽트를 일으키는 opcode '- 아니, 오늘이 아닙니다. 최신 프로세서에는 다양한 조건에서 디버거 인터럽트를 허용하는 디버그 하드웨어가 내장되어 있습니다 (예 : 브레이크 포인트 레지스터와의 명령 포인터 일치. –