이른바 블루 스크린 Windows 10에서 죽음을 맞이하고 긴장된 혼수 상태에 빠질 준비가 되었습니다. 함께 힘을 모아 문제를 해결하려고 합니다. 우선, 이 불길한 메시지가 당신에게 중요한 시스템 오류. 또한 Windows가 죽음의 블루 스크린에 빠지고 장치가 재부팅될 때 순간을 포착하고 오류 코드를 읽을 시간을 갖는 것이 항상 가능한 것은 아닙니다. 우리는 즉시 주목합니다 큰 금액이 문제에 대한 해결책과 블루 스크린의 원인. 이 기사에서 우리는 고려하려고 할 것입니다 가능한 원인행복의 블루 스크린의 출현뿐만 아니라 가능한 해결책문제.

대부분의 경우 죽음의 블루 스크린은 BAD_POOL_CALLER - stop 0x000000c2 오류를 나타냅니다. 이 오류를 진단하는 것은 솔직히 어렵지만 이 오류의 예를 사용하여 다음 작업의 알고리즘을 설명하려고 시도할 수 있습니다.

문제를 올바르게 진단하려면 먼저 분석해야 합니다. 특수 파일 minidump(메모리 덤프)라는 시스템입니다. 이러한 파일을 생성하면 시스템에 오류가 발생하고 정확히 무엇이 오류를 발생시켰는지 알려줄 수 있습니다.

1. 작은 메모리 덤프의 자동 기록을 활성화하려면(기본적으로 비활성화됨) 컴퓨터 속성으로 이동하여 " 추가 옵션시스템"(이 포함은 Windows 10뿐만 아니라 모든 시스템에 제공됨):

원칙적으로 모든 미니덤프 파일은 BSOD(Blue Screen of Death) 발생 시 저장되며, C:\Windows\Minidump 폴더에서 찾을 수 있습니다. 파일 이름에 현재 날짜- 생성 시 오류가 발생한 날짜를 훨씬 쉽게 식별할 수 있습니다. 특히 이러한 파일이 두 개 이상 있을 수 있다는 점을 고려하면 더욱 그렇습니다.

small dame 메모리 미니덤프를 해독하는 두 가지 방법

첫 번째 방법, 다소 인기 있는 BlueScreenView 유틸리티를 사용하는 것입니다. 이 유틸리티는 메모리 덤프를 분석하는 데도 좋은 옵션이 될 수 있습니다. 이 유틸리티를 사용하면 문제가 있는 드라이버를 식별하는 데 유용합니다.

또한 BSOD(죽음의 블루 스크린)를 시스템이 다운되었을 때와 같이 정지 프레임에 있는 것처럼 볼 수 있다는 점에서 특히 주목할 만하다. 그것은 버전과 함께 오류의 시간과 날짜, 드라이버 또는 모듈 세부 정보를 표시합니다. 간단한 설명. 또한 이 유틸리티는 러시아어를 비롯한 여러 언어로 제공됩니다. 따라서 BlueScreenView 유틸리티는 BSOD 중에 메모리 덤프를 빠르게 분석해야 하는 경우에 적합합니다.

을 위한 두 번째 방법 Windows용 디버깅 도구를 설치하고 bsdos_utility 유틸리티도 다운로드해야 합니다. 또한 bsdos_utility.cmd 스크립트의 압축을 푼 후 C:\ 드라이브로 이동해야 합니다(별도의 폴더를 만들 수 있지만 스크립트 실행 주소 문자열은 예제와 다릅니다). 그런 다음 명령줄에 다음을 작성합니다.

C:\bsdos_utility.cmd

C:\Windows\Minidump\ 목록에서 모든 덤프 목록을 표시한 후 스크립트는 분석해야 하는 덤프를 묻습니다. 스크립트를 실행할 때 원하는 미니덤프를 직접 선택할 수도 있습니다.

이러한 방식으로 질량을 감지할 수 있습니다. 윈도우 오류 BSOD를 일으킨 10과 블루 스크린을 일으킨 문제가 있는 .exe 프로그램.

설치할 구성 요소를 선택하는 다음 단계에서( 설치하려는 기능을 선택하십시오) 필요한 것만 표시 - 디버깅 도구 윈도우용 그리고 누르다 설치

유틸리티 세트가 인터넷에서 첫 번째 화면에 지정된 폴더로 다운로드되어 설치됩니다.

설치가 완료되면 "시작"메뉴 또는 시작 화면의 바로 가기 그룹에서 찾습니다. 윈도우 키트공익사업 바람둥이그리고 관리자 권한으로 실행

어떤 이유로 바로 가기를 찾을 수 없으면 설치 디렉토리에서 실행 파일을 실행할 수 있습니다. C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\windbg.exe

프로그램의 메인 메뉴에서 바람둥이항목 선택 파일 > 기호 파일 경로. 열리는 창에서 기호 캐시 및 해당 온라인 소스의 로컬 디렉토리에 let을 정의하는 행을 삽입하십시오.

SRV*C:\Windows\symbol_cache*http://msdl.microsoft.com/download/symbols

메인 메뉴에서 항목을 선택하여 설정을 저장합니다. 파일 > 작업 공간 저장

메뉴에서 선택하여 메모리 덤프 파일 열기 파일 > 크래시 덤프 열기...

파일 선택 메모리.DMP(기본적으로 C:\Windows 디렉토리에 있음)을 클릭하고 열려 있는

어떤 특정 실행 모듈이 시스템 작동을 멈추게 했는지에 대한 정보가 나타납니다. 하이퍼링크를 클릭하면 !분석-v중지 오류 발생 시 시스템 상태에 대한 자세한 정보를 얻을 수 있습니다.

대략 다음 명령 시퀀스를 사용하여 명령줄을 사용하여 동일한 정보를 얻을 수도 있습니다.

cd/d" C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\" kd -z "D:\DOWNLOADS\VM05\MEMORY.DMP " .logopen C:\Debuglog.txt .sympath srv*C:\Windows\symbol_cache*http://msdl.microsoft.com/download/symbols

이 예에서 모든 덤프 구문 분석 정보는 읽을 수 있는 형식으로 C:\Debuglog.txt 파일에 덤프됩니다.

정보의 출처:

좋은 오후, 친애하는 동료 및 블로그 사이트 독자. 오늘은 Windows 10 Redstone 메모리 덤프를 분석하는 방법을 알려드리고자 합니다. 이것은 대부분의 경우 오류와 함께 죽음의 블루 스크린이 나타난 후 컴퓨터가 다시 시작될 때 수행됩니다. 그리고 이 분석실패의 원인을 이해하는 데 도움이 됩니다.

Windows 10 메모리 덤프 설정

따라서 Windows 10 Redstone 운영 체제의 메모리 덤프는 무엇입니까? 나는 위에서 당신에게 설명했습니다 일반적인 원인시스템 메모리 덤프가 나타나고 이것은 죽음의 블루 스크린입니다. 출현 이유는 매우 광범위합니다.

  • 애플리케이션 비호환성
  • 드라이버 비호환성
  • 새로운 윈도우 업데이트
  • 기기가 호환되지 않음

이것은 블루 스크린에서 온 많은 오류 코드가 있기 때문에 가장 최근의 것을 제공할 것입니다.

우리의 임무는 진단을 위해 이러한 파일을 찾고 이를 해석하여 문제에 대한 정보를 얻을 수 있도록 하는 것입니다.

Windows 10 크래시 덤프는 어디에 구성되어 있습니까?

먼저 Windows 10 크래시 메모리 덤프를 담당하는 설정이 어디에서 이루어졌는지 알아보겠습니다.Windows 10 시작 버튼을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴시스템을 선택합니다.

열리는 시스템 창에서 왼쪽에 있습니다. 상단 모서리고급 시스템 옵션을 선택합니다.

여기에서 Windows 10 메모리 덤프가 구성됩니다. 부팅 및 복구에서 설정 항목을 클릭합니다.

설정, Windows 10 메모리 덤프에서 다음 사항에 유의하고 싶습니다.

  • 이벤트 녹화 시스템 로그> 여기에 블루 스크린에 대한 정보가 로그에 추가됩니다. 운영 체제.
  • 운영 자동 재부팅> 오류 후 계속하려면
  • 디버그 정보 쓰기 > 덤프 파일 유형을 선택할 수 있습니다. 자세한 내용은 아래에서 설명합니다.
  • 유용한 확인란인 기존 덤프 파일을 교체하십시오. 이러한 덤프의 무게는 수십 기가바이트일 수 있으므로 소형 ssd 드라이브에 매우 중요합니다.

메모리 덤프 유형

디버깅 정보를 기록하는 옵션이 어떻게 다른지 살펴보겠습니다.

  • 작은 메모리 덤프 256KB: 작은 메모리 덤프 파일에는 다음 정보가 포함됩니다.

– 치명적인 오류 메시지, 해당 매개변수 및 기타 데이터

– 로드된 드라이버 목록

– 프로세서 컨텍스트( PRCB) 장애가 발생한 경우

프로세스) 오류를 일으킨 프로세스의 경우

– 프로세스 정보 및 커널 컨텍스트( ETHREAD) 오류를 일으킨 스레드의 경우

– 오류를 일으킨 스레드에 대한 커널 모드 호출 스택.

아주 소량일 때 사용합니다. 디스크 공간너의 로컬 디스크. 이것이 우리가 기부하는 방법입니다 유용한 정보, 블루 스크린을 진단하기에 충분하지 않을 수 있습니다.

미니 덤프는 C:\Windows\Minidump 경로를 따라 저장됩니다.

  • 커널 메모리 덤프 > 커널 메모리만 기록합니다. 이 경우 PC의 물리적 메모리 양에 따라 페이징 파일은 50에서 800까지 필요합니다. 메가바이트또는 부팅 볼륨에 있는 컴퓨터 물리적 메모리의 1/3.
  • 전체 메모리 덤프 > 글쎄, 이름에서 모든 것이 명확합니다. 그것은 절대적으로 모든 것을 기록합니다. 이것은 블루 스크린에 대한 최대 정보이며 문제에 대한 100% 진단을 제공합니다.

C:\Windows\Memory.dmp 경로를 따라 위치

  • 활성 메모리 덤프 > 호스트 시스템의 활성 메모리가 여기에 옵니다. 이것은 가상화에 사용할 수 있기 때문에 서버 플랫폼에 더 많은 기능이며 가상 시스템에 대한 정보가 덤프에 들어 가지 않도록 이 옵션이 발명되었습니다.

이 짧은 메모는 긴급 상황에 대처하기 위해 시스템을 구성하는 방법을 보여주기 위한 것입니다. 덤프 윈도우 메모리 , 즉 BSOD(Blue Screen of Death)의 출현을 특징으로 하는 치명적인 오류 발생 시 생성될 수 있는 덤프입니다. 일반적으로 덤프는 무엇이며 왜 필요하며 무엇이며 어떤 문제를 해결하도록 설계되었으며 어떤 정보가 포함되어 있습니까?

메모리 덤프는 작업 영역 외에도 다음을 포함하는 프로세스, 커널 또는 전체 운영 체제의 작업 메모리 내용입니다. 추가 정보프로세서 레지스터의 상태, 스택의 내용 및 기타 서비스 구조에 대해 설명합니다.

이 콘텐츠가 필요한 이유, 즉. 윈도우 메모리 덤프? 아마도 가장 일반적인 메모리 덤프는 운영 체제를 완전히 중지시킨 시스템 충돌()의 원인을 조사하는 데 사용됩니다. 이 외에도 메모리 상태는 다른 용도로 사용할 수 있습니다. 또한 메모리 덤프가 문자 그대로 모든 오류에 대한 정보를 얻을 수 있는 유일한 방법이라는 사실도 중요합니다! 그리고 시스템 메모리 덤프를 제거(수신)하는 것은 실제로 시스템의 물리적 메모리 내용을 즉시 인쇄(복사)하는 유일한 정확한 방법입니다.

덤프의 내용이 오류 시 메모리 상태를 더 정확하게 반영할수록 더 많은 비상 상황을 분석할 수 있습니다. 따라서 엄격하게 시스템의 물리적 메모리의 현재 복사본을 정확하게 얻는 것이 매우 중요합니다. 어떤 순간충돌 직전의 시간. 이를 수행하는 유일한 방법은 완전한 크래시 덤프를 만드는 것입니다. 그 이유는 아주 간단합니다. 시스템 메모리의 충돌 덤프가 실패의 결과로 또는 인위적으로 시뮬레이션된 상황의 결과로 발생하면 시스템이 비상 기능(KeBugCheckEx)의 제어를 받는 순간에 따라서 절대적으로 변경되지 않은(정적) 상태는 충돌이 발생하는 순간과 데이터가 미디어에 기록될 때까지 물리적 메모리의 내용을 변경하지 않고 원래 상태로 디스크에 기록됩니다. 글쎄요, 이것은 이론상이지만 가끔 생활에 있지만 결함이 있는 하드웨어 구성 요소로 인해 메모리 덤프 자체가 손상되거나 덤프 기록 프로세스 중에 스테이션이 정지될 수 있는 상황이 있습니다.

대부분의 경우 메모리 크래시 덤프 생성 프로세스가 시작되는 순간부터 메모리 내용이 디스크에 기록되는 순간까지 메모리의 정보는 변경되지 않은 상태로 유지됩니다.

이론적으로 메모리 "발자국"의 정적(불변성)은 충돌에 대한 정보를 표시하고 메모리 덤프 생성 프로세스를 시작하는 KeBugCheckEx 함수가 호출될 때 시스템이 이미 완전히 중지되고 물리적 메모리의 내용은 페이징 파일이 디스크에서 차지하는 블록에 기록된 후 운영 체제의 후속 부팅 중에 이미 시스템 미디어의 파일에 덤프됩니다. 글쎄, 거의 한 번 실패하는 상황을 관찰했습니다. 마더보드메모리 덤프 저장 방지: a) 작업 중 덤프 저장 논리 정지(프로세스가 100%에 도달하지 않음), b) 메모리 덤프 파일 손상(디버거 저주 구조), c) 다음의 memory.dmp 덤프 파일 쓰기 제로 길이. 따라서 메모리 덤프가 생성된 시점에 시스템이 이미 완전히 중지되었고 비상 코드만 작동하고 있음에도 불구하고 결함이 있는 하드웨어는 모든 작동 단계에서 예외 없이 모든 논리를 자체적으로 조정할 수 있습니다.
일반적으로 초기 단계에서는 Windows 메모리 덤프를 저장하기 위해 페이징 파일(페이지 파일)에 할당된 디스크 블록을 사용합니다. 그런 다음 블루 스크린이 발생하고 재부팅이 발생한 후 데이터를 별도의 파일로 이동한 다음 덤프 유형에 따라 패턴에 따라 파일 이름을 변경합니다. 그러나 부터 Windows 버전 Vista에서는 이 상태를 변경할 수 있습니다. 이제 사용자는 스왑 파일을 사용하지 않고 전용 덤프를 저장할 수 있는 기회가 주어져서 충돌에 대한 정보를 임시 파일에 저장합니다. 이는 종종 메모리 덤프를 저장하는 과정에서 문제를 일으키는 페이징 파일의 크기와 위치에 대한 잘못된 설정과 관련된 구성 오류를 제거하기 위해 수행되었습니다.
Windows 운영 체제에서 생성할 수 있는 덤프 유형을 살펴보겠습니다.

  • 프로세스 메모리 덤프(응용 프로그램);
  • 커널 메모리 덤프;
  • 전체 메모리 덤프(시스템 물리적 메모리의 사용 가능한 부분 덤프).

모든 크래시 덤프는 두 가지 주요 범주로 나눌 수 있습니다.

  • 던져진 예외에 대한 정보가 있는 크래시 덤프. 일반적으로 생성된 자동 모드, 애플리케이션/커널에서 처리되지 않은 예외가 발생하면 시스템(내장) 디버거를 호출할 수 있습니다. 이 경우 예외에 대한 정보가 덤프에 기록되므로 후속 분석 중에 예외 유형과 발생 위치를 더 쉽게 결정할 수 있습니다.
  • 예외 정보가 없는 크래시 덤프. 일반적으로 나중에 분석을 위해 프로세스의 스냅샷만 생성해야 하는 경우 사용자가 수동으로 생성합니다. 이 분석은 예외가 발생하지 않았기 때문에 예외 유형의 결정을 의미하는 것이 아니라 프로세스 데이터 구조 등의 연구와 같이 완전히 다른 종류의 분석을 의미합니다.

커널 덤프 구성

관리자로 로그인해야 합니다. 계정이 섹션의 단계를 수행합니다.

Windows 크래시 덤프 설정 구성으로 바로 이동하겠습니다. 먼저 다음 방법 중 하나로 시스템 속성 창으로 이동해야 합니다.

  1. 딸깍 하는 소리 마우스 오른쪽 버튼으로 클릭"내 컴퓨터" - "속성" - "고급 시스템 설정" - "고급" 아이콘을 마우스로 클릭합니다.
  2. "시작" - "제어판" - "시스템" - "고급 시스템 설정" - "고급" 버튼.
  3. 키보드 단축키 "Windows" + "일시 중지" - "고급 시스템 설정" - "고급".

  4. controlsystem.cpl,3
  5. 명령줄(cmd)에서 실행:
    시스템 속성고급

설명된 작업의 결과는 "시스템 속성" 창을 열고 "고급" 탭을 선택하는 것입니다.

그런 다음 "다운로드 및 복구" 섹션에서 "옵션"을 클릭하고 선택하여 "다운로드 및 복구"라는 새 창을 엽니다.

모든 크래시 덤프 설정은 시스템 오류라는 설정 블록으로 그룹화됩니다. 이 블록에서 다음 매개변수를 설정할 수 있습니다.

  1. 시스템 로그에 이벤트를 기록합니다.
  2. 자동 재부팅을 수행합니다.
  3. 디버그 정보를 기록 중입니다.
  4. 덤프 파일.
  5. 기존 덤프 파일을 교체하십시오.

보시다시피, 목록의 많은 매개변수는 매우 사소하고 이해하기 쉽습니다. 그러나 "Dump file" 매개변수에 대해 더 자세히 설명하고 싶습니다. 매개변수는 드롭다운 목록으로 표시되며 다음과 같은 네 가지 값을 사용할 수 있습니다.

작은 메모리 덤프

작은 메모리 덤프(미니 덤프)는 충돌 정보가 가장 적은 파일입니다. 가능한 모든 메모리 덤프 중 가장 작은 것입니다. 명백한 단점에도 불구하고 추가 연구를 위해 타사 드라이버 공급업체에 전송하기 위한 오류 정보로 사용되는 것은 종종 미니 덤프입니다.
화합물:

  • 에러 메시지.
  • 오류 값.
  • 오류 옵션.
  • 실패한 프로세서 컨텍스트(PRCB)입니다.
  • 모든 스레드와 함께 충돌을 일으키는 프로세스에 대한 프로세스 정보 및 커널 컨텍스트(EPROCESS)입니다.
  • 충돌을 일으킨 스레드에 대한 프로세스 정보 및 커널 컨텍스트(ETHREAD)입니다.
  • 충돌을 일으킨 스레드의 커널 모드 스택입니다.
  • 로드된 드라이버 목록입니다.

숙소: %SystemRoot%\Minidump\MMDDYY-XXXXX-NN.dmp. 여기서 MMDDYY - 각각 월, 일 및 연도, NN - 일련 번호덤프.
볼륨: 크기는 운영 체제의 비트 수에 따라 다릅니다. 페이징 파일(또는 DedicatedDumpFile에 지정된 파일)에서 32비트 OS의 경우 128KB, 64비트 OS의 경우 256KB만 필요합니다. 이렇게 작은 크기를 설정할 수 없으므로 1MB로 반올림합니다.

커널 메모리 덤프

이 유형의 덤프에는 충돌 당시의 모든 커널 메모리 복사본이 포함되어 있습니다.
화합물:

  • 실행 중인 프로세스 목록입니다.
  • 현재 스레드의 상태입니다.
  • 충돌 시 물리적 메모리에 존재하는 커널 모드 메모리 페이지: 커널 모드 드라이버 메모리 및 커널 모드 프로그램 메모리.
  • HAL(하드웨어 인식 계층) 메모리.
  • 로드된 드라이버 목록입니다.

커널 메모리 덤프에 할당되지 않은 메모리 페이지와 사용자 모드 페이지가 없습니다. 동의합니다. 일반적으로 시스템 충돌은 커널 모드 코드에 의해 시작되기 때문에 시스템 충돌(BugCheck) 중에 사용자 모드 프로세스의 페이지가 관심을 끌 가능성은 거의 없습니다.

크기: 커널 주소 공간의 크기, 운영 체제 할당, 커널 모드 드라이버 수에 따라 다릅니다. 일반적으로 스왑 파일(또는 DedicatedDumpFile에서 지정한 파일)에 있는 실제 메모리 양의 약 1/3이 필요합니다. 다를 수 있습니다.

완전한 메모리 덤프

완전한 메모리 덤프에는 충돌 당시의 모든 물리적 메모리(RAM)의 복사본이 포함됩니다. 따라서 시스템 메모리의 전체 내용도 파일에 들어갑니다. 이는 RAM이 많은 일부 서버에서 크기가 상당할 수 있기 때문에 장점이자 주요 단점입니다.
화합물:

  • "보이는" 물리적 메모리의 모든 페이지. 이것은 하드웨어에서 사용하는 영역(BIOS, PCI 공간 등)을 제외하고 실질적으로 시스템의 전체 메모리입니다.
  • 충돌 당시 시스템에서 실행 중이던 데이터를 처리합니다.
  • 가상 주소 공간에 매핑되지 않지만 실패 원인을 조사하는 데 도움이 될 수 있는 물리적 메모리 페이지입니다.

전체 메모리 덤프에는 기본적으로 BIOS에서 사용하는 물리적 메모리 영역이 포함되지 않습니다.
위치: %SystemRoot%\MEMORY.DMP . 이전 덤프를 덮어씁니다.
크기: 페이징 파일(또는 DedicatedDumpFile에 지정된 파일)에는 실제 메모리 크기 + 257MB와 동일한 크기가 필요합니다(이 257MB는 일종의 헤더 + 드라이버 데이터로 분할됨). 실제로 일부 운영 체제에서는 페이징 파일의 하한 임계값을 실제 메모리 크기 값으로 정확하게 설정할 수 있습니다.

자동 메모리 덤프

Windows 8/부터 윈도우 서버 2012년에는 기본 유형으로 설정된 "자동 메모리 덤프"라는 시스템에 새로운 덤프 유형이 도입되었습니다. 이 경우 시스템 자체에서 특정 오류 상황에서 쓸 메모리 덤프를 결정합니다. 또한 선택 논리는 운영 체제의 "하락" 빈도를 비롯한 많은 기준에 따라 다릅니다.

Windows 메모리 덤프 구성을 변경한 후 컴퓨터를 다시 시작해야 할 수 있습니다.

레지스트리 설정

크래시 덤프 설정을 정의하는 레지스트리 키:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

옵션:

매개변수 유형 설명
자동 재부팅 REG_DWORD BSOD가 발생할 때 자동 재부팅을 활성화/비활성화합니다.
크래시 덤프 사용 REG_DWORD 생성 중인 덤프 유형입니다.
  • 0 - 메모리 덤프를 생성하지 않습니다.
  • 1 - 완전한 메모리 덤프;
  • 2 - 코어 메모리 덤프;
  • 3 - 작은 메모리 덤프;
덤프 파일 REG_EXPAND_SZ 코어 덤프 및 전체 덤프의 경로 및 이름입니다.
덤프 필터 REG_MULTI_SZ 메모리 덤프 드라이버 스택의 드라이버 필터. 크래시 덤프 생성 단계에서 새로운 기능을 추가할 수 있습니다. 예를 들어 덤프의 내용을 암호화합니다. 값을 변경하지 않는 것이 좋습니다.
로그 이벤트 REG_DWORD 시스템 로그에 이벤트를 기록합니다.
MinidumpDir REG_EZPAND_SZ 작은 메모리 덤프의 경로와 이름입니다.
MinidumpsCount REG_DWORD 작은 메모리 덤프의 최대 수입니다. 초과되면 이전 버전을 덮어쓰기 시작합니다.
덮어쓰기 REG_DWORD 기존 덤프 파일을 교체하십시오. 커널 메모리 덤프 및 전체 메모리 덤프 전용입니다.
페이지 파일 크기 무시 REG_DWORD 메모리 덤프를 임시(중간) 저장할 장소로 표준 페이징 파일을 무시합니다. 메모리 덤프를 별도의 파일에 기록해야 함을 나타냅니다. DedicatedDumpFile 옵션과 함께 사용됩니다.
전용 덤프 파일 REG_EZPAND_SZ 임시 경로 및 이름 대체 파일메모리 덤프를 작성합니다. 두 번째 패스에서 데이터는 여전히 DumpFile/MinidumpDir로 이동됩니다.

수동으로 메모리 덤프 생성

위에서 설정에 대해 설명했습니다. 자동 생성심각한 오류, 즉 커널 코드에서 처리되지 않은 예외가 발생한 경우 시스템 크래시 덤프. 그러나 실생활에서는 운영 체제의 충돌 외에도 특정 시점에 시스템 메모리 덤프를 가져와야 하는 상황이 있습니다. 이 경우 어떻게 해야 합니까? WinDbg/LiveKD 디버거에서 .dump 명령을 사용하는 것과 같이 모든 물리적 메모리의 즉각적인 복사본을 얻는 방법이 있습니다. LiveKD는 로컬 모드에서 실행 중인 시스템에서 Kd 커널 디버거를 실행할 수 있게 해주는 프로그램입니다. WinDbg 디버거에도 유사한 기능이 있습니다. 그러나 이 경우 덤프가 생성되기 때문에 덤프를 생성하는 데 시간이 걸리고 커널 모드 디버거를 사용하는 경우 "일관되지 않음"이기 때문에 덤프를 얻는 즉석 방법은 정확하지 않습니다. , 시스템은 계속 작동하고 메모리 페이지를 변경합니다.

치명적인 오류가 발생하면 Windows 운영 체제가 작동을 멈추고 BSOD(Blue Screen of Death)를 표시합니다. 콘텐츠 랜덤 액세스 메모리발생한 오류에 대한 모든 정보가 페이징 파일에 기록됩니다. 다음에 윈도우 부팅크래시 덤프는 저장된 데이터를 기반으로 하는 디버깅 정보로 생성됩니다. 시스템 이벤트 로그에 치명적인 오류 항목이 생성됩니다.

주목!디스크 하위 시스템에 장애가 발생하거나 크래시 덤프가 생성되지 않습니다. 치명적 오류 Windows를 로드하는 초기 단계에서 발생했습니다.

Windows 크래시 덤프 유형

현재 운영 중인 사례에 대해 윈도우 시스템 10(Windows Server 2016)에서는 시스템에서 생성할 수 있는 주요 메모리 덤프 유형을 살펴보겠습니다.

  • 미니 메모리 덤프(작은 메모리 덤프)(256KB). 이 유형의 파일에는 최소한의 정보가 포함되어 있습니다. 여기에는 BSOD 오류 메시지, 드라이버에 대한 정보, 충돌 시 활성화된 프로세스, 충돌을 일으킨 프로세스 또는 커널 스레드만 포함됩니다.
  • 커널 메모리 덤프. 일반적으로 물리적 메모리의 1/3로 작습니다. 커널 메모리 덤프는 미니 덤프보다 더 상세합니다. 여기에는 커널 모드의 드라이버 및 프로그램에 대한 정보가 포함되며 할당된 메모리가 포함됩니다. 윈도우 커널하드웨어 추상화 계층(HAL)과 커널 모드에서 드라이버 및 기타 프로그램에 할당된 메모리.
  • 완전한 메모리 덤프. 크기가 가장 크며 시스템 RAM과 Windows에서 이 파일을 만드는 데 필요한 1MB를 더한 것과 같은 메모리가 필요합니다.
  • 자동 메모리 덤프. 정보 측면에서 커널 메모리 덤프에 해당합니다. 덤프 파일을 만드는 데 사용하는 공간만 다릅니다. 이 파일 형식은 Windows 7에 없었습니다. Windows 8에 추가되었습니다.
  • 활성 메모리 덤프. 이 유형은 시스템 오류의 원인을 판별할 수 없는 요소를 필터링합니다. 이것은 Windows 10에 추가되었으며 다음을 사용하는 경우 특히 유용합니다. 가상 기기또는 시스템이 Hyper-V 호스트인 경우.

Windows에서 메모리 덤프 생성을 활성화하는 방법은 무엇입니까?

Win + Pause를 사용하여 시스템 설정 창을 열고 " 추가 시스템 설정" (고급 시스템 설정). 탭에서 " 추가적으로"(고급), ""(시작 및 복구) 섹션, " 옵션» (설정). 열리는 창에서 시스템 장애 시 조치를 구성하십시오. 확인란을 선택하십시오 " 시스템 로그에 이벤트 쓰기» (시스템 로그에 이벤트 쓰기), 시스템 충돌 시 생성될 덤프 유형을 선택합니다. 체크박스에 " 기존 덤프 파일 바꾸기» (기존 파일 덮어쓰기) 확인란을 선택하면 충돌이 발생할 때마다 파일을 덮어씁니다. 이 상자의 선택을 취소하는 것이 좋습니다. 그러면 분석을 위한 추가 정보가 제공됩니다. 시스템의 자동 다시 시작도 비활성화합니다(자동으로 다시 시작).

대부분의 경우 작은 메모리 덤프만으로도 BSOD의 원인을 분석하기에 충분합니다.

이제 BSOD가 발생하면 덤프 파일을 분석하여 실패 원인을 찾을 수 있습니다. 미니 덤프는 기본적으로 %systemroot%\minidump 폴더에 저장됩니다. 덤프 파일을 분석하려면 프로그램을 사용하는 것이 좋습니다. WinDBG(마이크로소프트 커널 디버거).

Windows에 WinDBG 설치

공익사업 WinDBG포함 된 " 윈도우 10 SDK»(Windows 10 SDK). .

파일이 호출됩니다 windksetup.exe, 크기 1.3MB.

설치를 실행하고 이 컴퓨터에 패키지를 설치할지 아니면 다른 컴퓨터에 설치하기 위해 다운로드할지 선택합니다. 로컬 컴퓨터에 패키지를 설치합니다.

전체 패키지를 설치할 수 있지만 디버그 도구만 설치하려면 디버깅 도구.

설치가 완료되면 시작 메뉴에서 WinDBG 바로 가기를 찾을 수 있습니다.

.dmp 파일과 WinDBG의 연결 설정

간단한 클릭으로 덤프 파일을 열려면 .dmp 확장자를 WinDBG 유틸리티에 매핑하십시오.

  1. 열려 있는 명령줄관리자 권한으로 64비트 시스템용 명령 실행: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    32비트 시스템의 경우:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. 결과적으로 파일 형식: .DMP, .HDMP, .MDMP, .KDMP, .WEW는 WinDBG에 매핑됩니다.

WinDBG에서 디버그 기호 서버 설정

디버깅 기호(디버그 기호 또는 기호 파일)는 프로그램을 실행 파일과 함께 컴파일하는 과정에서 생성되는 데이터 블록입니다. 이러한 데이터 블록에는 함수, 라이브러리 등의 변수 이름에 대한 정보가 포함됩니다. 이 데이터는 프로그램을 실행할 때 필요하지 않지만 디버깅할 때 유용합니다. Microsoft 구성 요소는 Microsoft 기호 서버를 통해 배포되는 기호로 컴파일됩니다.

Microsoft 기호 서버를 사용하도록 WinDBG를 설정합니다.

  • WinDBG를 엽니다.
  • 메뉴로 이동 파일 –> 기호 파일 경로;
  • Microsoft 웹 사이트에서 디버그 기호를 다운로드하기 위한 URL과 캐시를 저장할 폴더를 포함하는 문자열을 작성합니다. SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols 이 예에서는 캐시가 다운로드됩니다. E:\Sym_WinDBG 폴더에 아무거나 지정할 수 있습니다.
  • 메뉴 변경 사항을 저장하는 것을 잊지 마십시오. 파일–>WorkSpace를 저장하십시오.

WinDBG는 로컬 폴더에서 기호를 검색하고 필요한 기호를 찾지 못하면 지정된 사이트에서 기호를 자동으로 다운로드합니다. 자신만의 기호 폴더를 추가하려면 다음과 같이 하면 됩니다.

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols

인터넷에 연결되어 있지 않으면 먼저 Windows 기호 패키지 리소스에서 기호 패키지를 다운로드하십시오.

WinDBG의 크래시 덤프 분석

WinDBG 디버거는 덤프 파일을 열고 로컬 폴더 또는 인터넷에서 디버깅에 필요한 기호를 다운로드합니다. 이 과정에서 WinDBG를 사용할 수 없습니다. 창 하단(디버거 명령줄에서)에 비문이 나타납니다. 디버그 대상이 연결되지 않았습니다.

명령은 창 하단에 있는 명령줄에 입력됩니다.

주의해야 할 가장 중요한 것은 오류 코드이며 항상 표시됩니다. 16진수 값그리고 보인다 0xXXXXXXXXX(옵션 중 하나에 표시됨 - STOP:, 07/02/2019 0008F, 0x8F). 이 예에서 오류 코드는 0x139입니다.

디버거가 명령을 실행하라는 메시지를 표시합니다!analyst -v, 링크 위로 마우스를 가져간 다음 클릭하기만 하면 됩니다. 이 명령은 무엇을 위한 것입니까?

  • 메모리 덤프에 대한 예비 분석을 수행하고 다음을 제공합니다. 자세한 정보분석을 시작합니다.
  • 이 명령은 STOP 코드와 오류의 기호 이름을 표시합니다.
  • 충돌을 일으킨 명령의 호출 스택을 보여줍니다.
  • 또한 IP 주소, 프로세스 및 레지스터 오류가 여기에 표시됩니다.
  • 팀은 문제 해결을 위해 미리 만들어진 권장 사항을 제공할 수 있습니다.

!analyze -v 명령을 실행한 후 분석할 때 주의해야 할 주요 사항(목록이 완전하지 않음).

1: kd> !분석 -v


* *
*버그 체크 분석*
* *
*****************************************************************************
STOP 오류의 상징적 이름(BugCheck)
KERNEL_SECURITY_CHECK_FAILURE(139)
오류 설명(커널 구성 요소가 중요한 데이터 구조를 손상시켰습니다. 이 손상으로 인해 잠재적으로 공격자가 이 시스템을 제어할 수 있음):

커널 구성 요소가 중요한 데이터 구조를 손상시켰습니다. 손상으로 인해 잠재적으로 악의적인 사용자가 이 시스템을 제어할 수 있습니다.
오류 인수:

인수:
Arg1: 0000000000000003, A LIST_ENTRY가 손상되었습니다(즉, 이중 제거).
Arg2: ffffd0003a20d5d0, 버그 체크를 일으킨 예외에 대한 트랩 프레임의 주소
Arg3: ffffd0003a20d528, 버그 체크를 일으킨 예외에 대한 예외 레코드의 주소
Arg4: 0000000000000000, 예약됨
디버깅 세부 정보:
------------------

카운터는 유사한 오류로 시스템이 충돌한 횟수를 보여줍니다.

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

축약된 형식의 STOP 오류 코드:

BUGCHECK_STR: 0x139

충돌한 프로세스(오류의 원인일 필요는 없으며 충돌 당시 해당 프로세스가 메모리에서 실행 중일 뿐임):

PROCESS_NAME: sqlservr.exe

오류 코드 해독: 시스템이 이 응용 프로그램에서 스택 버퍼 오버플로를 감지했습니다. 이로 인해 공격자가 이 응용 프로그램을 제어할 수 있습니다.

ERROR_CODE: (NTSTATUS) 0xc0000409 - 시스템이 이 응용 프로그램에서 스택 기반 버퍼의 오버런을 감지했습니다. 이 오버런으로 인해 잠재적으로 악의적인 사용자가 이 응용 프로그램을 제어할 수 있습니다.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - 시스템이 이 응용 프로그램에서 스택 기반 버퍼의 오버런을 감지했습니다. 이 오버런으로 인해 잠재적으로 악의적인 사용자가 이 응용 프로그램을 제어할 수 있습니다.

스택에 대한 마지막 호출:

LAST_CONTROL_TRANSFER: fffff8040117d6a9에서 fffff8040116b0a0으로

실패 시 호출 스택:

STACK_TEXT:
ffgffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d 체크
fffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: Check nt!KiBatch
Disstdffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000:00000000 00000000`00000000 00000000000
fffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9:Security nt!
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 fffd000`3a20nt!951: ?? ::FNODOBFM::`문자열"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000
ffffd000`3a20d990 fffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf!Nt000eb`a0cf1380:4Filent
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`0
000000ee'f25ed2b8 00000000'00000000: 00000000'00000000 00000000'00000000 00000000'00000000

오류가 발생한 코드 섹션:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov 바이트 ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: 기계 소유자

커널 개체 테이블에 있는 모듈의 이름입니다. 분석기가 문제가 있는 드라이버를 감지할 수 있으면 이름이 MODULE_NAME 및 IMAGE_NAME 필드에 표시됩니다.

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd > lmvm NT
전체 모듈 목록 찾아보기
로드된 기호 이미지 파일: ntkrnlmp.exe
매핑된 메모리 이미지 파일: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
이미지 경로: ntkrnlmp.exe
이미지 이름: ntkrnlmp.exe
내부 이름: ntkrnlmp.exe
원본 파일 이름: ntkrnlmp.exe
제품 버전: 6.3.9600.18946
파일 버전: 6.3.9600.18946(winblue_ltsb_escrow.180302-1800)

위의 예에서 분석은 커널 파일 ntkrnlmp.exe를 가리켰습니다. 메모리 덤프 분석이 시스템 드라이버(예: win32k.sys) 또는 커널 파일(예: 이 예에서는 ntkrnlmp.exe)을 가리키는 경우 주어진 파일문제의 원인이 아닙니다. 매우 자주 문제가 장치 드라이버에 있다는 것이 밝혀졌습니다. BIOS 설정또는 장비 오작동.

BSOD가 타사 드라이버로 인한 것임을 확인하면 해당 이름이 MODULE_NAME 및 IMAGE_NAME 값에 나열됩니다.

예를 들어:

이미지 경로: \SystemRoot\system32\drivers\cmudaxp.sys
이미지 이름: cmudaxp.sys

드라이버 파일의 속성을 열고 버전을 확인하십시오. 대부분의 경우 드라이버 문제는 업데이트하면 해결됩니다.