2013년 6월 8일 토요일

Appler 디버깅하기 ___ 3

이제 빌드가 다 되었으니 디버깅을 하기 전에, 정상적으로 작동을 하는지는 확인해 봐야겠죠?
필요한 파일들(*.rom, *.dsk 등등)을 빌드한 폴더에 복사해 넣고서 확인해 보았습니다.


초기화면

데모화면

로드런너

디스크매니저. 문제도 그대로...

디버거



크게 문제는 없는 것처럼 보입니다.
그러니 이렇게 빌드된 것으로 디버깅을 해도 되겠죠.

그런데 터보디버거에서 빌드된 바이너리를 읽어 들이자마자 문제가 나타납니다.


심볼테이블이 없답니다.
하긴 Makefile에 디버깅 정보를 포함하게 만들지 않았겠다 싶습니다.

매뉴얼을 찾아 보니 복잡하고 어렵고 귀찮고....
그래서 헬프화면을 보았습니다.
TASM의 헬프화면 /zi 로군요.

TLINK의 헬프화면 /v 로군요.

TASM.CFG에 /zi 추가

MAKEFILE에 /v 추가

그리고 obj exe 모두 지우고 다시 빌드.... 에러 발생
여러가지 방법으로 해 보았지만 TLINK의 /v 옵션이 문제였습니다.

그래서....직접 손으로 타이핑해 보았습니다.
아..ㅁ어니ㅏ언ㅇ... 옵션의 순서에 영향을 받습니다...
볼랜드가 이런 회사일줄은 몰랐습니다.
커맨드라인 하나 제대로 처리를 못하다뇨....

우여곡절 끝에 실행시킨 터보 디버거의 첫 화면입니다.



우선, 수정했던 부분들이 어떻게 돌아가고 있는지 확인해 보고 싶습니다.
수정했던 소스를 불러들여서 원하는 위치에서 F2를 누르면 Breakpoint가 토글됩니다.
(F3 키를 이용해서 Module을 불러들여야 합니다.)

혹은, 레이블이나 프로시져등의 이름을 알고 있다면 다음과 같은 과정으로 빠르게 Breakpoint를 설정할 수도 있습니다.

Breakpoint At... Alt-F2

레이블/프로시져 이름을 입력하고 엔터치면 바로 Breakpoint 설정됩니다.

확인을 위해서 View - Breakpoint를 하면

해당 위치에 Breakpoint가 붉은 색으로 표시되어 있습니다.

수정했던 곳은 저기에서 2단락 아래정도이니 여기에 다시 설정합니다.

그리고 또 한군데 추가하고... 위에 과정 반복입니다.

Run(F9)을 했더니 DeviceSelect에 먼저 걸렸습니다. View-CPU 화면.

위에서 설정한 DeviceSelect의 Breakpoint는 너무 자주 걸립니다. 그리고 대부분은 DeviceSelect20으로 jmp 해버려서 쓸모가 없더군요.
jz DeviceSelect20 아래로 Breakpoint를 옮겨야 했습니다.

디버깅을 막 시작하는 단계인데, 의외의 복병이 나타났습니다.
appler.exe가 실행하는 동안에 문제가 되었던 Disk Manager 화면으로 진입하기 위해서는 F3 키를 눌러야 하는데, F1 ~ F10의 키를 모두 디버거가 핫키로 사용하더군요.
그래서 F3을 누르면 appler.exe가 Diskmanager로 진입하는게 아니라, 디버거 화면으로 돌아와서 멈추어 있는 상태가 됩니다.
appler.exe를 수정해서 진입키를 바꾸어야만 하는건지, 터보디버거에서 옵션으로 핫키를 무력화 시키거나 조정할 수 있는지 알아봐야 할 듯 합니다.
appler.exe를 실행하고 디버거와 appler사이를 몇번 오가다 보면 어느 순간부터 F1 ~ F10키를 누르기만 해도, 바로 appler의 실행을 멈추고 디버거로 돌아옵니다.
따라서 F3키로 디스크매니저에 진입하는 순간을 잡는 것이 불가능하게 됩니다.
그럼 처음부터 다시 디버깅을 해야 하는 사태가...

별 진전이 없이 헤메기만 했지만 오늘은 여기에서 마쳐야 하겠네요.

댓글 없음: