본문 바로가기
MES 문의 : 010-8015-0400
IT개발/개발 일반

pdb 파일로 디버깅하는 법

by all it 2024. 11. 25.
반응형

PDB 파일(.pdb - Program Database File)은 디버깅 정보를 포함하고 있어, 애플리케이션을 디버깅할 때 소스 코드와 실행 중인 코드 간의 연결을 가능하게 한다. 이를 사용하여 디버깅하는 방법은 다음과 같다.

1. PDB 파일 준비

  • PDB 파일은 컴파일 시 생성되며, 프로젝트 설정에서 디버깅 정보 생성을 활성화하면 된다.
  • Visual Studio에서는 보통 Debug 빌드 구성으로 빌드할 때 PDB 파일이 생성된다. Release 빌드에도 PDB 파일을 포함하려면 빌드 설정에서 디버깅 심볼을 설정해야 한다.

2. Visual Studio에서 PDB 파일로 디버깅하기

  1. 애플리케이션 빌드 후 PDB 파일 확인
    • 프로젝트 빌드를 수행하면 .exe 또는 .dll 파일과 함께 .pdb 파일이 출력 디렉터리에 생성된다. 일반적으로 bin/Debug 또는 bin/Release 폴더에 위치한다.
  2. PDB 파일과 함께 DLL/EXE 파일 로드
    • Visual Studio에서 실행 파일(EXE) 또는 라이브러리(DLL)를 로드하여 디버깅하려면, File -> Open -> Project/Solution에서 실행 파일을 직접 열어야 한다.
    • PDB 파일이 실행 파일과 같은 폴더에 있거나 해당 PDB 파일을 찾을 수 있는 위치에 있으면, Visual Studio가 디버깅 심볼을 자동으로 로드한다.
  3. 외부 DLL의 PDB 파일 디버깅
    • 외부 DLL을 디버깅할 때는 해당 DLL의 소스 코드와 PDB 파일이 필요하다.
    • Visual Studio에서 디버깅할 때 해당 DLL이 로드된 시점에서 Modules 창(Debug -> Windows -> Modules)을 열고, 디버깅하고자 하는 DLL을 선택한 다음, Load Symbols를 클릭하여 PDB 파일을 수동으로 로드할 수 있다.
  4. 심볼 파일 경로 설정
    • 심볼 파일(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 파일을 로드하고 디버깅할 수 있다.

반응형

댓글