반응형
PDB 파일(.pdb - Program Database File)은 디버깅 정보를 포함하고 있어, 애플리케이션을 디버깅할 때 소스 코드와 실행 중인 코드 간의 연결을 가능하게 한다. 이를 사용하여 디버깅하는 방법은 다음과 같다.
1. PDB 파일 준비
- PDB 파일은 컴파일 시 생성되며, 프로젝트 설정에서 디버깅 정보 생성을 활성화하면 된다.
- Visual Studio에서는 보통 Debug 빌드 구성으로 빌드할 때 PDB 파일이 생성된다. Release 빌드에도 PDB 파일을 포함하려면 빌드 설정에서 디버깅 심볼을 설정해야 한다.
2. Visual Studio에서 PDB 파일로 디버깅하기
- 애플리케이션 빌드 후 PDB 파일 확인
- 프로젝트 빌드를 수행하면 .exe 또는 .dll 파일과 함께 .pdb 파일이 출력 디렉터리에 생성된다. 일반적으로 bin/Debug 또는 bin/Release 폴더에 위치한다.
- PDB 파일과 함께 DLL/EXE 파일 로드
- Visual Studio에서 실행 파일(EXE) 또는 라이브러리(DLL)를 로드하여 디버깅하려면, File -> Open -> Project/Solution에서 실행 파일을 직접 열어야 한다.
- PDB 파일이 실행 파일과 같은 폴더에 있거나 해당 PDB 파일을 찾을 수 있는 위치에 있으면, Visual Studio가 디버깅 심볼을 자동으로 로드한다.
- 외부 DLL의 PDB 파일 디버깅
- 외부 DLL을 디버깅할 때는 해당 DLL의 소스 코드와 PDB 파일이 필요하다.
- Visual Studio에서 디버깅할 때 해당 DLL이 로드된 시점에서 Modules 창(Debug -> Windows -> Modules)을 열고, 디버깅하고자 하는 DLL을 선택한 다음, Load Symbols를 클릭하여 PDB 파일을 수동으로 로드할 수 있다.
- 심볼 파일 경로 설정
- 심볼 파일(PDB)이 다른 위치에 있다면, Visual Studio에서 Tools -> Options -> Debugging -> Symbols로 이동하여 경로를 추가할 수 있다.
- 여기에 PDB 파일이 있는 디렉터리를 추가하고, Visual Studio가 심볼 파일을 자동으로 찾을 수 있도록 설정한다.
3. 디버깅 실행
- 중단점 설정: 소스 코드에서 중단점을 설정한다. .pdb 파일이 제대로 로드되었다면, 소스 코드의 중단점이 활성화된다.
- 디버깅 모드로 실행: F5 키를 눌러 디버깅 모드로 애플리케이션을 실행하거나, 외부 프로세스를 연결하려면 Debug -> Attach to Process...를 통해 실행 중인 프로세스에 연결할 수 있다.
- PDB 정보 확인: 디버깅 중 Modules 창에서 각 모듈의 심볼 파일이 제대로 로드되었는지 확인할 수 있다.
4. 디버깅 시 고려 사항
- 심볼 파일 일치: PDB 파일은 해당 빌드와 정확히 일치해야 한다. 즉, 다른 버전에서 빌드된 DLL과 PDB 파일을 사용하면 제대로 디버깅되지 않는다.
- 소스 파일 경로 문제: 소스 코드 경로가 빌드 당시 경로와 달라졌다면, PDB 파일이 로드되더라도 올바른 소스 코드를 찾을 수 없을 수 있다. 이 경우 Visual Studio가 소스 파일을 수동으로 찾도록 요청할 수 있다.
5. 기타 도구 사용
- WinDbg: Visual Studio가 아닌 다른 디버깅 도구인 WinDbg를 사용해도 PDB 파일을 활용한 디버깅이 가능하다. WinDbg에서 .sympath 명령어를 사용해 심볼 경로를 지정한 뒤 .reload 명령어로 심볼을 다시 로드할 수 있다.
- dnSpy: .NET 응용 프로그램의 경우 dnSpy 같은 디컴파일러 및 디버거를 이용해 PDB 파일을 사용하여 디버깅할 수 있다.
위의 방법을 통해 .pdb 파일을 활용하여 원본 소스와 연결된 디버깅을 수행할 수 있다. Visual Studio를 사용하면 가장 편리하게 PDB 파일을 로드하고 디버깅할 수 있다.
반응형
'IT개발 > 개발 일반' 카테고리의 다른 글
Devexpress, 필터에 -2147483647 같은 쓰레기 값이 쓰여질 때 (1) | 2024.11.26 |
---|---|
Devexpress GridView cell old value, new value 체크하기 (0) | 2024.11.25 |
Visual Studio 확장 프로그램 - CodeMaid 사용하여 사용성 높이기 (1) | 2024.11.15 |
MSSQL, Job 스케줄러 T-SQL로 생성하기 (1) | 2024.11.15 |
C#, 파일이 사용중인지 체크하기 (0) | 2024.11.14 |
댓글