반응형
<델파이 7 기준 - Access Violation Error 가 발생했을 때 메모리 주소값으로 에러난 라인 찾기.>
Project - Options 로 들어간다.
Linker - Map File - Detailed 를 선택 후 "OK" 버튼을 누른다.
그럼 프로젝트가 저장되는 폴더에 프로젝트 이름.map 파일이 생성된다.
<그림 1 - 소스코드>
<그림 2 - 에러메세지>
<그림 3 - map 파일 맨 밑부분>
에러난 주소 $00456415에서 HIntance인 $00400000을 뺀다.
그리도 PE포맷의 헤더등 불필요한 앞부분 사이즈인 $1000 도 뺀다.
그러면 $00055415가 된다.
그러면 map파일에서 $00055415를 찾아보면 33line 0001번째 문자에서 에러가 났다는 것을 알 수 있다.
XP, 2000에서는 HInstance는 항상 $00400000이고 델파이로 만들어진 EXE의 PE헤더정보는 항상 $1000 바이트이다.
그러므로 에러가 난 주소 = 에러화면에 나온주소 - $00410000 하면 된다.
프로그램을 배포하기 전에 맵파일을 만들어 두어야 한다.
혹시 안만들고 배포하더라고 나중에 만들면 되긴 하지만, 소스코드가 최종 컴파일 됐을 때 그대로 있어야 한다.
맵에 라인별 주소값은 컴파일 할 당시 실제로 컴파일한 유닛들만 나온다.
반응형
'Programming > Delphi' 카테고리의 다른 글
프로그램 화면을 이미지로 저장하기 (0) | 2010.06.30 |
---|---|
작업표시줄에 프로그램 표시하기/숨기기 (0) | 2010.06.30 |
웹브라우저 POST로 호출하기 (0) | 2010.06.30 |
윈도우 종료 5가지 방법 (0) | 2010.06.30 |
INI 파일 사용하기 (0) | 2010.06.30 |