2013-03-05 2 views

답변

2

중단 점은 프로세서 나 하드웨어 브레이크 포인트라고합니다. 좋은 소식

첫 번째는 하드웨어 브레이크 포인트를 설정하기 쉽습니다. 프로세서의 디버그 레지스터 (DR0, DR1, DR2 또는 DR3) 중 하나를 데이터 주소로 설정하고 디버그 제어 레지스터 DR7을 메모리 크기 및 액세스 유형을 설정하는 필드로 설정해야합니다. ,

MOV의 RAX DR0

분명히 당신은 어떻게 든 선택의 언어에서이 어셈블러 명령을 실행하거나, C로 ++ 및 인라인 어셈블리 상호 운용성 사용해야합니다

을, 그러나 이것은이다 : (64 어셈블러에서) 명령은 같다 예를 들어 소프트웨어 브레이크 포인트를 설정하는 것보다 쉽습니다.

지금 나쁜 소식 모두의

먼저, SMP 시스템에서 당신은 당신의 코드를 만질 수있는 모든 프로세서에 대해이 작업을 수행해야합니다. 이것은 아마도 프로세스 친 화성을 구성하거나 단일 프로세스 기계에서 디버깅을 수행하면 해결할 수 있습니다. 둘째, Intel 아키텍처에는 4 개의 디버그 프로세서 만 있습니다. WinDbg를 사용하여 프로세서 중단 점을 설정하려고 시도하면 g을 실행 한 후 4 분 후에 Too many data breakpoints for thread N을 부릅니다.

수동으로 중단 점을 설정하기에는 너무 많은 개체가 있기 때문에 자동화에 대해 묻는 모든 목적이 있다고 가정합니다. 어쨌든 4 ba 중단 점으로 제한되므로이 부분을 자동화하는 데 별다른 의미가 없습니다.