알아도 몰라도 별 상관 없는 팁인데,
코딩으로 브레이크 포인트 거는 방법에 관한 것입니다.
asm int 3;
디버그 모드에서 실행하면 이 코드에서 브레이크포인트가 걸려 멈추고
빌더나 VC는 해당 소스 라인을 보여줍니다.
DebugBreak();
이건 API 함수에서 지원하는 브레이브포인트 거는 함수입니다.
함수의 내용은
asm int 3;
asm ret;
이게 다입니다.
하지만 코드가 ntdll 안에 있기 때문에, 소스라인이 보여지는 것이 아니라
빌더의 CPU 창이 뜨게 됩니다. 소스가 없으니 CPU 창이 뜨는 것이지요.
asm int 3; 이나 DebugBreak(); 공히 CPU에 브레이크포인트를 거는 것에
불과하므로, F9나 F7, F8 로 계속 프로그램 실행을 진행할 수 있습니다.
주의할 점은 디버그모드가 아닌 상태에서 int 3; 은
"프로그램에 문제가 발생해서 종료합니다. 오류상태를 MS에 통보할까요 하는 OS가 뿌리는
어플 강제 종료 메시지 창을 만나게 됩니다.
이걸 어디에 쓰면 좋을까요?
ㅡㅡ;
|
[참고] http://www.gpgstudy.com/forum/viewtopic.php?t=5334