-
map 파일을 활용한 디버그 방법IT/Visual Studio 2009. 5. 14. 17:01
윈도우즈 프로그램이 아래와 같이 알수없는 런타임 에러를 내는 경우,
Visual Studio 에서 생성해 주는 map 파일을 활용하여 디버그를 할 수 있다.
원본 출처 : http://www.codeproject.com/KB/debug/mapfile.aspx
사용법 간단정리 :--------------------------------------------------------------------------------------
1. setting - C/C++ tab : Line Numbers Only 로 설정 ( Visual Studio 2005 이상 버전에서는 삭제)
2. setting - Link tab : Generate map file 체크
3. setting - Link tab : Project options 란에 /MAPINFO:LINES /MAPINFO:EXPORTS 추가
--------------------------------------------------------------------------------------
1. 먼저 map 파일 안에서 함수 위치를 찾는다. : 문제가 발생한 주소를 포함한 함수를 찾음.2. 라인을 찾기 위해 crash address - load adress - 0x1000 = offset 으로 offset을 구한다. : 0x1000 은 PE header 정보크기이다.
3. offset으로 라인을 찾는다. : 2에서 구한 offset 값으로 라인을 찾으면 OK.
결론은 릴리즈시 바이너리생성과 동시에 map파일 생성하고, 릴리즈 바이너리처럼 관리해서 문제 발생시,
문제부분을 정확히 알아내자.... 정도.
문제는 외부 라이브러리등의 링크시 확인이 불가능하다...
'IT > Visual Studio' 카테고리의 다른 글
Run-Time Check Failure #2 - Stack around the variable ~~ was corrupted (0) 2009.06.26 invalid address specified to RtlFreeHeap (0) 2009.05.14 Visual C++ 6.0 에서 Iphlpapi.h 인클루드 관련 에러 해결방법 (0) 2009.02.26 Windows Vista 에서 Visual Studio 6.0 설치하기 (0) 2009.02.26 Visual Studio 설치시 acme 설치를 찾을 수 없다는 에러메시지 (0) 2009.02.24