빌더 C++ 소스에 브레이크포인트(브포)를 설정하고 실행시키면
브포건 지점에서 멈춥니다.
여기에서 각종 변수 값을 조회하고 현재 프로그램이 잘 동작하고 있는지
점검할 수 있습니다.
그러면 어떻게 빌더는 브포를 구현할까요?
잘 알려진 것처럼 빌더는 디버깅 모드에서나 릴리즈 모드에서나
실행파일의 실행 속도가 거의 비슷합니다(쓰레드 효율이 중요한 경우는 제외)
빌더는 해당 어플의 소스에 브포를 걸면
해당 지점에 0xCC 즉 int 3 코드를 삽입해 놓습니다.
원래 코드 1바이트는 백업을 해 놓죠.
그러면 프로그램이 쭉 실행되다가 브포 int 3 를 만나면 멈추게 됩니다.
그러면 빌더는 백업해 놓은 1바이트는 원래의 자리에 도로 넣어 놓고는
해당 위치를 디스어셈블이나 변수 값 조회등을 할 수 있게 합니다.
그리고 계속 실행 F9 또는 다음 라인 F8, F7 등의 진행 계속 명령을 내려주면
계속 프로그램이 진행하는 것입니다.
물론 진행시키고 다시 브포 건 곳의 값을 int 3 으로 바꾸어 놓습니다.
아래 스샷은 직접 찍은 것으로 이를 확인할 수 있습니다.
0x404438 번지에 브포를 걸었는데, 걸리고 나서 바로 확인해보면
오른쪽 CPU 창처럼 정상적인 코드가 보이지만,
실행직후는 왼쪽처럼 int 3 코드인 0xCC가 들어 있는 것을 확인할 수 있습니다.
이러한 브포 거는 방법은 델파이쪽도 똑 같답니다.
쉬운 건데 말로 쓸려니 길어졌군요.
아래는 제가 만들고 있는 프로그램의 일부입니다.
|