DetailPage-MSS-KB

기술 자료

기술 자료: 2268212 - 마지막 검토: 2014년 5월 23일 금요일 - 수정: 1.4

소개

Visual Studio 2010에서 개발된 응용프로그램이 예기치 않게 종료되었거나 크래시(Crash) 문제가 발생하였을 때, 사용자 메모리 덤프를 수집(참조: ADPlus를 사용하여 "중지"와 "충돌" 문제를 해결하는 방법) (http://support.microsoft.com/kb/286350/ko) 한 후 마이크로소프트 Windows 디버거(Windbg (http://www.microsoft.com/whdc/devtools/debugging/default.mspx) )라는 툴을 이용하여 분석하실 수 있습니다. 하지만, Windbg 는 기존의 Visual Studio 를 개발툴로 사용하는 개발자에게는 익숙하지 않은 명령 기반의 디버깅 툴로써 많은 개발자들이 Visual Studio 에서와 같은 환경에서 메모리 덤프를 분석하는 기능을 원하였으며, Visual Studio 2010 은 이러한 개발자들의 요구에 맞춰 새롭게 메모리 덤프를 분석하는 기능을 포함하였습니다. 이 문서에서는 Visual Studio 2010을 이용한 크래시 메모리 덤프를 분석하는 방법에 대하여 간단하게 살펴보겠습니다.

분석 방법

Visual Studio 2010을 이용한 크래시 메모리 덤프를 분석하는 방법에 대해 아래와 같이 3단계로 나누어 설명합니다.


단계 1: Visual Studio 2010에서 크래시 메모리 덤프 파일 열기

  1. Visual Studio 2010을 실행합니다.

  2. 파일(F) 상단 메뉴에 포함되어 있는 [열기(O)] 메뉴를 선택하고, 그 하위 메뉴 중 [파일(F)…] 항목을 선택합니다.

  3. 파일 열기 대화 창이 뜨면 크래시 메모리 덤프 파일이 존재하는 위치로 이동하여 해당 덤프 파일을 선택한 후 Visual Studio 에서 엽니다.
    그림 축소그림 확대



    표 축소표 확대
    그림 축소그림 확대
    팁
    Visual Studio 2010에서 크래시 메모리 덤프 파일을 열면, 무엇보다도 먼저 상위의 그림과 같은 ‘미니덤프 파일 요약’ 화면을 볼 수 있는 데, 프로세스 아키텍처, 예외 코드, 예외 정보 그리고, 시스템 정보나 프로세스에 로딩된 모듈 정보까지 확인 할 수 있습니다.

단계 2: 심볼 정보 설정하기

  1. 메모리 덤프 파일 요약 화면의 우측 상단의 동작[기호 경로 설정]을 선택합니다.

  2. 옵션 창의 디버깅 항목 중 기호를 선택한 화면에서 기호 파일(.pdb) 위치(F) 목록에 존재하는 [Microsoft 기호 서버]를 선택하여 마이크로소프트사에서 제공하는 공용 심볼 서버를 추가합니다.
    그림 축소그림 확대


  3. 해당 화면의 우측 상단에 위치한 폴더 모양의 버튼
    그림 축소그림 확대
    을 선택하여 사용자 소유의 심볼 위치(디렉토리)를 추가할 수 있습니다. 이는 Visual Studio 를 종료 후 다시 열더라도 유지됩니다.

  4. 이 디렉토리의 기호 캐시에 임의의 폴더를 추가하여 심볼 파일을 위한 캐싱 폴더로써 사용할 수 있습니다.
    그림 축소그림 확대


  5. 설정 후 [확인] 버튼을 선택하여 종료합니다.

단계 3: 디버깅하기

  1. 메모리 덤프 파일 요약 화면의 우측 상단의 동작 [네이티브 전용(으)로 디버그]를 선택합니다.

  2. 디버그(D) 상단 메뉴의 창(W) 메뉴 중 호출 스택(C) 창을 보면, 문제가 발생한 시점의 호출 스택 정보를 확인할 수 있습니다.
    그림 축소그림 확대


  3. 호출 스택(C) 창에서 보여지는 특정 함수를 선택하면, 소스 창에 해당 함수와 연관 있는 소스 파일이 열리며, 소스 코드와 함께 디버깅을 할 수 있습니다.
    그림 축소그림 확대



    표 축소표 확대
    그림 축소그림 확대
    팁
    현재 위치에 적절한 소스 파일이 존재하지 않으면, 상위의 이미지에서 보여지는 것처럼 사용 가능한 소스 없음 화면을 볼 수 있으며, 소스 코드 없이 디스어셈블리 표시를 선택하여 디버깅 할 수 있습니다. 이 경우에는 레지스터 (G)창이 디스어셈블리 코드와의 디버깅에 도움을 줄 수 있습니다.

  4. 지역(L) 창에는 특정 함수 수행 시 사용 되었던 지역 변수들의 정보를 확인할 수 있습니다.
    그림 축소그림 확대


  5. 문제가 발생했던 순간의 호출 스택에서 보여지는 각각의 함수, 소스 코드 및 지역 변수들의 정보를 확인함으로써 문제의 원인을 찾아 갈 수 있습니다.

의견 보내기

표 축소표 확대
그림 축소그림 확대
의견 보내기
Microsoft 고객지원 사이트에서는 고객님의 소리를 귀담아 듣습니다. 아래 의견 보내기로 소중한 의견 보내주시기 바랍니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Studio 2010 Professional
  • Microsoft Visual Studio 2010 Ultimate
키워드: 
kbstepbystep kbhowto KB2268212
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store