다음을 통해 공유


Visual Studio 디버거에서 파일 덤프

덤프 파일은 실행 중인 프로세스와 특정 시점에 앱에 대해 로드된 모듈을 보여 주는 스냅샷입니다. 힙 정보가 포함된 덤프는 해당 시점의 앱 메모리 스냅샷도 포함합니다.

Visual Studio에서 힙을 사용하여 덤프 파일을 여는 것은 디버그 세션의 중단점에서 중지하는 것과 같습니다. 실행을 계속할 수는 없지만 덤프 시 앱의 스택, 스레드 및 변수 값을 검사할 수 있습니다.

덤프는 개발자가 액세스할 수 없는 컴퓨터에서 문제를 디버그하는 데 주로 사용됩니다. 사용자 컴퓨터에서 크래시 또는 응답하지 않는 프로그램을 재현할 수 없는 경우 고객의 컴퓨터에서 덤프 파일을 사용할 수 있습니다. 또한 테스터는 더 많은 테스트에 사용할 크래시 또는 응답하지 않는 프로그램 데이터를 저장하는 덤프를 만듭니다.

Visual Studio 디버거는 관리 코드 또는 네이티브 코드에 대한 덤프 파일을 저장할 수 있습니다. Visual Studio 또는 미니덤프 형식으로 파일을 저장하는 다른 앱에서 만든 덤프 파일을 디버그할 수 있습니다.

요구 사항 및 제한 사항

  • 64비트 컴퓨터에서 덤프 파일을 디버그하려면 Visual Studio가 64비트 컴퓨터에서 실행 중이어야 합니다.
  • Visual Studio는 Linux OS에서 관리되는 앱의 덤프 파일을 디버그할 수 있습니다.
  • Visual Studio는 ARM 디바이스에서 네이티브 앱의 덤프 파일을 디버그할 수 있습니다. ARM 디바이스에서 관리되는 앱의 덤프를 디버그할 수도 있지만 네이티브 디버거에서만 디버그할 수 있습니다.
  • 커널 모드 덤프 파일을 디버그하거나 Visual Studio에서 SOS.dll 디버깅 확장을 사용하려면 WDK(Windows 드라이버 키트)에서 Windows용 디버깅 도구를 다운로드합니다.
  • Visual Studio는 이전의 전체 사용자 모드 덤프 형식으로 저장된 덤프 파일을 디버그할 수 없습니다. 전체 사용자 모드 덤프는 힙이 있는 덤프와 동일하지 않습니다.
  • 최적화된 코드의 덤프 파일을 디버깅하는 것은 혼동될 수 있습니다. 예를 들어 함수의 컴파일러 인라인 처리로 인해 예기치 않은 호출 스택이 발생할 수 있으며 다른 최적화로 인해 변수의 수명이 변경될 수 있습니다.

힙을 포함하거나 포함하지 않는 덤프 파일

덤프 파일에 힙 정보가 있거나 없을 수 있습니다.

  • 힙이 있는 덤프 파일에는 덤프 시 변수 값을 포함하여 앱 메모리의 스냅샷이 포함됩니다. 또한 Visual Studio는 로드된 네이티브 모듈의 이진 파일을 힙이 있는 덤프 파일에 저장하므로 디버깅이 훨씬 쉬워질 수 있습니다. Visual Studio는 앱 이진 파일을 찾을 수 없는 경우에도 힙이 있는 덤프 파일에서 기호를 로드할 수 있습니다.

  • 힙이 없는 덤프 파일은 힙 이 있는 덤프보다 훨씬 작지만 디버거는 앱 이진 파일을 로드하여 기호 정보를 찾아야 합니다. 로드된 이진 파일은 덤프를 생성하는 동안 실행되는 바이너리와 정확히 일치해야 합니다. 힙이 없는 덤프 파일은 스택 변수의 값만 저장합니다.

덤프 파일 만들기

Visual Studio에서 프로세스를 디버깅하는 동안 예외 또는 중단점에서 디버거가 중지된 경우 덤프 파일을 저장할 수 있습니다.

Just-In-Time 디버깅을 사용하도록 설정하면 Visual Studio 디버거를 Visual Studio 외부의 충돌된 프로세스에 연결한 다음 디버거에서 덤프 파일을 저장할 수 있습니다. 실행 중인 프로세스에 연결을 참조하세요.

덤프 파일을 저장하려면 다음을 수행합니다.

  1. 디버깅하는 동안 오류 또는 중단점에서 중지되었을 때, 디버그>덤프 저장으로 저장을 선택합니다.

  2. 다른 이름으로 덤프 저장 대화 상자의 다른 이름으로 저장 형식에서 힙이 있는 미니덤프 또는 미니덤프(기본값)를 선택합니다.

  3. 경로를 찾아 덤프 파일의 이름을 선택한 다음 저장을 선택합니다.

비고

Windows 미니덤프 형식을 지원하는 모든 프로그램을 사용하여 덤프 파일을 만들 수 있습니다. 예를 들어 Windows SysinternalsProcdump 명령줄 유틸리티는 트리거 또는 요청 시 프로세스 크래시 덤프 파일을 만들 수 있습니다. 다른 도구를 사용하여 덤프 파일을 만드는 방법에 대한 자세한 내용은 요구 사항 및 제한 사항을 참조하세요.

덤프 파일 열기

  1. Visual Studio에서 파일>열기> 선택합니다.

  2. 파일 열기 대화 상자에서 덤프 파일을 찾아 선택합니다. 일반적으로 .dmp 확장이 있습니다. 확인을 선택합니다.

    미니덤프 파일 요약 창에는 덤프 파일에 대한 요약 및 모듈 정보와 수행할 수 있는 작업이 표시됩니다.

    미니덤프 요약 페이지를 보여 주는 스크린샷.

    미니덤프 요약 페이지를 보여 주는 스크린샷.

  3. 작업 메뉴에서:

.exe, .pdb 및 원본 파일 찾기

덤프 파일에서 전체 디버깅 기능을 사용하려면 Visual Studio에 다음이 필요합니다.

  • 덤프가 만들어진 .exe 파일과 덤프 프로세스에 사용된 다른 바이너리 파일(예: DLL)입니다.
  • .exe 및 기타 이진 파일에 대한 심볼(.pdb) 파일입니다.
  • 덤프를 만들 때 파일의 버전 및 빌드와 정확히 일치하는 .exe.pdb 파일입니다.
  • 관련 모듈의 원본 파일입니다. 원본 파일을 찾을 수 없는 경우 모듈의 디스어셈블리를 사용할 수 있습니다.

덤프에 힙 데이터가 있는 경우 Visual Studio는 일부 모듈에 대해 누락된 이진 파일에 대처할 수 있지만 유효한 호출 스택을 생성하기에 충분한 모듈에 대한 이진 파일이 있어야 합니다.

.exe 파일의 검색 경로

Visual Studio는 덤프 파일에 포함되지 않은 .exe 파일을 자동으로 검색합니다.

  1. 덤프 파일이 포함된 폴더입니다.
  2. 덤프 파일이 지정하는 모듈 경로로, 덤프를 수집한 컴퓨터의 모듈 경로입니다.
  3. 도구(또는 디버그) >옵션>디버깅> 기호에 지정된기호 경로입니다. 덤프 파일 요약 창의 [작업] 패널에서 [기호] 페이지를 열 수도 있습니다. 이 페이지에서 검색할 위치를 더 추가할 수 있습니다.

이진 없음, 기호 없음 또는 원본을 찾을 수 없는 페이지 사용

Visual Studio가 덤프에서 모듈을 디버그하는 데 필요한 파일을 찾을 수 없는 경우 이진 파일 없음, 기호를 찾을 수 없음 또는 원본을 찾을 수 없음 페이지가 표시됩니다. 이러한 페이지에서는 문제의 원인에 대한 자세한 정보를 제공하고 파일을 찾는 데 도움이 되는 작업 링크를 제공합니다. 기호(.pdb) 및 소스 파일지정을 참조하세요.