C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[674] 빌더는 어떻게 브레이크포인트를 거는가?
김태선 [cppbuilder] 12185 읽음    2007-07-12 17:05
빌더 C++ 소스에 브레이크포인트(브포)를 설정하고 실행시키면
브포건 지점에서 멈춥니다.
여기에서 각종 변수 값을 조회하고 현재 프로그램이 잘 동작하고 있는지
점검할 수 있습니다.

그러면 어떻게 빌더는 브포를 구현할까요?
잘 알려진 것처럼 빌더는 디버깅 모드에서나 릴리즈 모드에서나
실행파일의 실행 속도가 거의 비슷합니다(쓰레드 효율이 중요한 경우는 제외)

빌더는 해당 어플의 소스에 브포를 걸면
해당 지점에 0xCC 즉 int 3 코드를 삽입해 놓습니다.
원래 코드 1바이트는 백업을 해 놓죠.
그러면 프로그램이 쭉 실행되다가 브포 int 3 를 만나면 멈추게 됩니다.
그러면 빌더는 백업해 놓은 1바이트는 원래의 자리에 도로 넣어 놓고는
해당 위치를 디스어셈블이나 변수 값 조회등을 할 수 있게 합니다.
그리고 계속 실행 F9 또는 다음 라인 F8, F7 등의 진행 계속 명령을 내려주면
계속 프로그램이 진행하는 것입니다.
물론 진행시키고 다시 브포 건 곳의 값을 int 3 으로 바꾸어 놓습니다.

아래 스샷은 직접 찍은 것으로 이를 확인할 수 있습니다.
0x404438  번지에 브포를 걸었는데, 걸리고 나서 바로 확인해보면
오른쪽 CPU 창처럼 정상적인 코드가 보이지만,
실행직후는 왼쪽처럼 int 3 코드인 0xCC가 들어 있는 것을 확인할 수 있습니다.

이러한 브포 거는 방법은 델파이쪽도 똑 같답니다.

쉬운 건데 말로 쓸려니 길어졌군요.

아래는 제가 만들고 있는 프로그램의 일부입니다.
장성호 [nasilso]   2007-07-20 13:36 X
김태선님의 포스(Force)가 느껴집니다.
김태선 [cppbuilder]   2007-07-21 20:14 X
포스는 아니고요, 사실 누구나 할수 있는 수준에 불과합니다.

+ -

관련 글 리스트
674 빌더는 어떻게 브레이크포인트를 거는가? 김태선 12185 2007/07/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.