-
Debug symbol fileHack/WinDbg 2012. 8. 3. 21:27
디버그 심볼 파일이란?
- 실행 파일을 빌드할 때 생성되는 디버그용 정보 파일로 실행파일 안에 존재하는 함수나 변수들의 이름과 위치, 소스파일, 소스라인 정보를 가지고 있다
.pdb를 확장자로 가지고 있으며 소스라인 디버깅을 가능하게 한다
Visual Studio를 사용하는 경우 기본적으로 Debug 빌더 설정이 되어있기 때문에 Symbol 파일이 자동으로 생성되고 디버깅이 가능하다
그리고 일반 회사에서 고객을 위한 프로젝트를 하는 경우 Release를 위해 Release빌더를 하게 되는데 이 경우엔 자동으로 생성되지 않으며 Symbol을 유지하지도 않는다
하지만, 마이크로소프트에서는 운영체제에서 발생하는 문제를 좀 더 쉽게 풀어나가기 위해 Symbol을 공개하고 있다
* 제품이 고객들에게 릴리즈 되기시작하면 심볼 파일을 포함한 모든 파일을 버전 별로 저장해 두어야 한다
Release를 하면서 Symbol 파일을 생성하여 디버깅을 쉽게 하기 위해 개발 툴 별로 설정이 가능하다
- Visual c++ 6.0
1. Project -> Settings
2. Settings For = Win32 Release로 선택
3. C/C++ 탭의 Debug Info = Program Database 로 선택
4. Link 탭의 Generate debug info, Generate mapfile 체크
- Visual Studio 2008
1. 프로젝트 -> 속성
2. 구성 : 활성(Release), 플랫폼 : 활성(Win32)로 선택
3. C/C++ 트리 -> 디버깅정보형식 : 프로그램 데이터베이스(/Zi)로 선택
4. 링커 트리 -> 디버깅 -> 디버그 정보 생성 : 예(/DEBUG), 프로그램 데이터 베이스 파일 생성 : .\Release/MyApp.pdb,
맵 파일 생성 : 예(/MAP), 맵 파일 이름 : .\Release/MyApp.map 로 설정한다
- NT 커널모드 드라이버 개발 시
1. SOURCES 파일에 다음 내용을 추가한다
USER_C_FLAGS=$(USER_C_FLAGS) -Zi ( C컴파일러에게 디버깅 정보를 생성하라고 지시(-Zi))
NTDEBUGTYPE=windbg ( windbg에서 사용하는 형식의 디버깅 정보를 생성하라)
USE_PDB=1 ( .pdb 파일에 디버깅 정보를 담아서 생성하라)
2. MAP 파일도 생성 하려면?
LINKER_FLAGS=$(LINKER_FLAGS) - MAP 추가
'Hack > WinDbg' 카테고리의 다른 글
Windbg 설치 및 Vmware Debugging 설정 (0) 2015.01.08 Windows 7과 Vista에서 덤프파일 (0) 2012.08.03