다음을 통해 공유


Crashdump 지원 테스트(로고)

이 테스트는 시스템 중지 오류가 발생한 후 Windows의 저장소 미니포트 드라이버가 메모리 덤프 파일 생성을 지원하는지 확인합니다.

테스트 세부 정보

   
사양
  • System.Fundamentals.StorageAndBoot.BootPerformance
  • Device.Storage.Controller.Boot.BasicFunction
  • System.Server.Base.ServerRequiredComponents
플랫폼
  • Windows 10, 클라이언트 버전(x86)
  • Windows 10, 클라이언트 버전(x64)
  • Windows Server 2016(x64)
  • Windows 10, 클라이언트 버전(Arm64)
지원되는 릴리스
  • Windows 10
  • Windows 10 버전 1511
  • Windows 10 버전 1607
  • Windows 10, 버전 1703
  • Windows 10, 버전 1709
  • Windows 10, 버전 1803
  • Windows 10, 버전 1809
  • Windows 10, 버전 1903
  • Windows 10에 대한 다음 업데이트
예상 실행 시간(분) 45
범주 시나리오
시간 제한(분) 2700
다시 부팅 필요 false
특별한 구성 필요 true
형식 automatic

 

추가 설명서

이 기능 영역의 테스트에는 다음 항목에서 찾을 수 있는 필수 조건, 설정, 문제 해결 정보를 포함한 추가 설명서가 있을 수 있습니다.

테스트 실행

테스트를 실행하기 전에 테스트 중인 저장소 컨트롤러 종류에 대한 테스트 요구 사항에 설명된 테스트 설정을 완료합니다. 자세한 내용은 저장소 어댑터 또는 컨트롤러 테스트 개요를 참조하세요.

이 테스트에는 추가 소프트웨어 및 하드웨어가 필요합니다.

  • 테스트할 디바이스

  • 파티션 C:에서 사용할 수 있는 최소 20GB의 하드 드라이브.

테스트를 실행하기 전에 다음 필수 구성 요소도 완료해야 합니다.

  • 테스트 시스템에 인터넷 연결이 있는 경우 아무 작업도 수행할 필요가 없습니다.

    테스트 시스템에 인터넷 연결이 없는 경우 C:\Symbols라는 폴더를 만들고 Windows 운영 체제 기호를 다운로드하여 설치합니다. 이렇게 하려면 다음 단계를 수행하세요.

    참고

       덤프 파일을 분석하려면 기호가 필요합니다. 기호를 설치하지 못하는 것은 이 테스트를 실패하게 만드는 가장 일반적인 테스트 설정 문제입니다. 기호 버전은 테스트 컴퓨터에 설치된 운영 체제 버전과 일치해야 합니다. 따라서 키트 외부에 다운로드해야 합니다.

     

    1. 인터넷에 연결되어 있는 컴퓨터에서 Windows 기호 패키지를 다운로드합니다. 자세한 내용은 Windows 기호 패키지 다운로드를 참조하십시오.

    2. 기호 파일을 테스트 컴퓨터의 C:\Symbols 폴더에 복사합니다. 기호가 클 수 있으므로 ntkrnlmp.pdb(x64 또는 Arm의 경우) 또는 ntkrpamp.pdb(x86의 경우)만 복사해야 합니다.

문제 해결

HLK 테스트 실패의 일반적인 문제 해결은 Windows HLK 테스트 실패 문제 해결을 참조하세요.

문제 해결 정보는 Device.Storage 테스트 문제 해결을 참조하세요.

  • 테스트에서 "올바른 기호를 로드하지 못했습니다."라는 오류 메시지를 기록합니다.

    다시 부팅 시 테스트는 덤프 파일의 정확성을 검사합니다. 테스트에서 개발자처럼 커널 디버거 kd를 사용하여 이 작업을 수행합니다(Windows 대한 디버깅 도구 다운로드 및 설치 참조). 덤프 파일을 분석하려면 디버거가 기호에 액세스해야 합니다(기호 파일 참조). 이것은 덤프에 대한 사전입니다. 디버거는 이 사전을 사용하여 메모리(또는 crashdump 파일)의 내용을 개별 모듈(실행 파일, 라이브러리, 드라이버 등), 해당 모듈 내의 함수 및 데이터 구조로 분석할 수 있습니다. 일반적인 규칙으로 커널 디버거를 사용하여 덤프 파일을 검사할 수 없는 경우 테스트를 통과할 수 없습니다.

    테스트가 제대로 작동하려면 디버거에 기호를 제공해야 합니다. 적절한 기호가 없는 경우 테스트의 첫 번째 분석 단계에서 로그 오류 중에 경고를 기록합니다. 이 작업을 수행하기 위한 현재 메커니즘은 테스트를 실행하기 전에 공용 기호를 다운로드하고(Windows 기호 패키지 다운로드 참조) 테스트 컴퓨터에 설치하는 것입니다. 기호가 설치되지 않았거나 테스트 중인 운영 체제와 일치하지 않는 경우 테스트 로그에 다음 메시지가 표시될 수 있습니다.

    • (x) 올바른 기호를 로드하지 못했습니다.

    • (i) 운영 체제 기호를 설치하는 방법에 대한 WDK 설명서를 참조하세요.

    • (i) 기호가 만료되었을 수도 있습니다. Microsoft 기호 서버를 사용하여 기호를 업데이트하세요.

    이 메시지가 나타나더라도, 어떤 경우에는 여전히 덤프를 부분적으로 일치하는 기호로 분석할 수 있기 때문에 실제로 테스트에 실패하지는 않습니다. 테스트가 계속되고 ...의 주소를 가져올 수 없는 오류 또는 ...을(를) 가져올 수 없는 오류와 같은 메시지로 더 많은 테스트 사례가 실패하는 경우 디버거가 기호 누락으로 인해 덤프를 분석할 수 없음을 의미합니다. 기호를 해결하는 한 가지 방법은 인터넷 기호 서버에서 캐시된 기호로 패키지에 포함된 로컬로 설치된 기호를 보완하는 것입니다. 다음 단계에 따라 기호를 로컬로 캐시합니다.

    1. crashdump를 이미 만들었어야 합니다. 이 작업을 수행하는 가장 쉬운 방법은 테스트를 한 번 실행하고 실패하도록 두는 것입니다.

    2. 디버깅 도구가 설치되어 있는지 확인합니다. 다시 강조하자면, 이 작업을 수행하는 가장 쉬운 방법은 테스트를 한 번 실행하는 것입니다. C:\Debuggers에 도구를 설치합니다.

    3. 관리자 권한 명령 프롬프트를 엽니다.

    4. 다음 명령을 입력합니다. c:\Debuggers\kd -z c:\Windows\MEMORY.DMP -y SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols

    5. 그러면 기호를 캐시하기 위해 Microsoft의 원격 기호 저장소와 로컬 디렉터리 C:\Symbols를 다운스트림 저장소로 사용하여 커널 디버거에서 덤프를 로드합니다.

    6. NTOSKRNLNTDLL과 같은 운영 체제 파일에 대한 기호를 찾을 수 있는지 확인합니다. 이러한 파일은 덤프를 분석하는 데 필요합니다. 오류가 타사 드라이버와 같은 다른 모듈에 대한 기호를 로드하는 것처럼 표시되면 괜찮습니다.

    7. 이제 프롬프트 0: kd>가 있어야 합니다. 이 프롬프트에서 .reload /f 명령을 입력합니다. 이 명령은 디버거가 덤프에 로드된 모듈에 대한 모든 기호를 로드하고 캐시하도록 합니다.

    8. 디버거를 종료하려면 Ctrl-B를 누른 다음 Enter 키를 누릅니다.

  • 테스트에서 "전체 덤프를 수행하기에는 페이징 파일 크기가 너무 작습니다."라는 오류 메시지를 기록합니다.

    작동 중단 시 운영 체제의 어떤 부분이 계속 작동할지는 확실하지 않습니다. 네트워크 또는 파일 시스템 드라이버가 작동 중단을 일으켰을 수 있습니다. 예를 들어 덤프 파일을 만들 파일 시스템 구조에 대한 액세스나 파일을 원격으로 저장할 네트워크에 대한 액세스를 차단합니다. 운영 체제는 이미 있는 파일(페이지 파일)을 사용하여 이를 처리하고 디스크에서 해당 파일의 논리적 블록 범위로 직접 씁니다. 덤프 프로세스는 실제 메모리의 내용을 시스템 디스크의 페이지 파일(일반적으로 c:\pagefile.sys)에 씁니다. 페이지 파일은 덤프를 포함할 수 있을 만큼 커야 합니다. 가장 큰 덤프는 전체 덤프로, 실제 메모리 크기(예: 4096)에 추가로 1메가바이트를 더하여 헤더 정보를 포함해야 합니다. 테스트를 수행하려면 사용자가 실행하기 전에 페이지 파일을 적절한 크기로 구성해야 합니다. 페이지 파일 크기가 부족한 경우 테스트에서 초기화 단계 중에 다음 오류를 기록합니다.

    • (i) 페이징 파일 크기를 확인합니다.

    • (x) 전체 덤프를 수행하기에는 페이징 파일 크기가 너무 작습니다.

    • (i) 페이징 파일 크기: 330989568

    • (i) 실제 메모리 크기: 1073094656

    • (i) 최소 페이징 파일 크기를 실제 RAM 크기 + 1MB로 구성하세요.

  • 시스템 중지 오류(파란색 화면)가 표시되지만 버그 검사 코드가 E2가 아닙니다.

    몇 가지 기본 설정 유효성 검사 후 테스트에서 시스템 작동을 중단하고 시스템을 다시 부팅하는 데 사용되는 드라이버를 설치합니다. 다시 부팅한 후 테스트는 작동 중단 제어 설정(전체 메모리 덤프용)을 변경하고, 이전 덤프 파일을 삭제하고, 시스템의 작동을 중단합니다. 작동 중단 시 시스템은 작동 중단 특성에 대한 세부 정보가 포함된 버그 검사 화면(파란색 화면)을 표시합니다. 버그 검사 유형은 MANUALLY_INITIATED_CRASH(e2)여야 합니다. 여기에 다른 항목이 표시되면 덤프 파일을 쓰는 동안 두 번째 버그 검사가 발생했음을 의미합니다. 커널 디버거를 테스트 클라이언트에 연결하고 저장소 어댑터 드라이버를 디버깅하여 조사해야 합니다.

  • 테스트에서 "덤프 파일이 다른 프로세스에서 사용 중입니다. HRESULT: 0x80070020"라는 오류 메시지를 기록합니다.

    덤프 파일을 쓴 후에 테스트 컴퓨터가 자동으로 다시 부팅됩니다. 작동 중단 후 부팅 시 운영 체제는 페이지 파일에 덤프 정보가 있는지 감지하고 덤프 작성 프로세스를 시작합니다. 이 프로세스는 컴퓨터가 부팅되는 동안과 사용자가 로그인한 후에도 비동기적으로 발생합니다. 이 프로세스 중에 덤프 파일(C:\windows\memory.dmp)의 크기를 확인하거나 작업 관리자(werfault.exe)에서 프로세스를 확인하여 진행률을 볼 수 있습니다. 테스트는 종종 이 프로세스와 동시에 실행되며 동일한 덤프 파일에 액세스하려고 시도합니다. 이 경우 로그에 다음 메시지가 표시됩니다.

    • (i) DumpFile: C:\Windows\MEMORY. DMP에 연결

    • (i) 다른 프로세스에서 덤프 파일을 사용하고 있습니다. HRESULT: 0x80070020

    • (i) 일반적으로 memory.dmp는 계속 큰 RAM으로 인해 쓰여지고 있으며 5분 후에 다시 시도합니다.

    그러면, 테스트에서 파일에 다시 액세스를 시도해야 합니다. 오류 메시지 코드가 다르거나 변경되는 경우(예: 0x80070002 : ERROR_FILE_NOT_FOUND) 파일을 디스크에 쓸 수 없음을 의미합니다. 중요한 디버그 정보를 확인할 첫 번째 위치는 시스템 이벤트 로그입니다. 이벤트 로그를 보려면 시작을 클릭하고 실행을 클릭한 다음 Compmgmt.msc를 입력합니다. 컴퓨터 관리 창에서 컴퓨터 관리\시스템 도구\이벤트 뷰어\시스템을 선택합니다. 원본 BugCheck가 있는 이벤트에 대한 이벤트 목록을 찾습니다. 덤프 파일이 누락되는 가장 일반적인 원인은 디스크의 여유 공간이 부족하기 때문입니다. 레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\MachineCrash에는 덤프 파일을 생성한 경우 부분 덤프 파일을 포함한 마지막 작동 중단(다시 부팅 전)에 대한 정보가 포함됩니다. 이 기능은 누락된 다른 덤프 문제를 디버그하려고 할 때 유용할 수 있습니다.

추가 정보

Crashdump는 시스템 중지 오류 후 운영 체제가 저장소 어댑터 드라이버를 호출하여 메모리의 내용을 덤프 파일에 쓰는 메커니즘입니다. 시스템 중지 오류의 특성으로 인해 운영 체제는 시스템의 안정성에 대해 어떤 가정도 할 수 없습니다. 따라서 저장소 드라이버에서 사용할 수 있는 시스템 서비스는 거의 없습니다. Crashdump 지원 테스트는 저장소 어댑터 드라이버가 이러한 제한된 환경에서 계속 작동하고 I/O를 수행하여 덤프에 성공적으로 쓸 수 있는지 확인합니다.

Windows 운영 체제를 사용하면 세 가지 유형의 메모리 덤프 파일을 생성할 수 있습니다.

  • 전체

  • 커널

  • 미니

이 테스트는 커널 및 미니 덤프 파일 형식을 테스트합니다. 이러한 덤프 파일 형식에 대한 자세한 내용은 커널 모드 덤프 파일을 참조하세요.

테스트에서 다음 작업 시퀀스를 완료합니다.

  1. %SystemDrive%\Debuggers 디렉터리에 Windows 디버깅 도구를 설치하고 시스템을 초기화합니다.

  2. 테스트 드라이버를 설치하여 작동 중단을 시뮬레이션합니다.

  3. 페이지 파일 크기를 설정합니다.

  4. 버그 검사 코드 0x000000E2를 포함한 시스템 중지 오류(블루스크린)를 시뮬레이션합니다.

  5. 시스템을 다시 부팅하고 자동으로 테스트를 다시 시작합니다.

  6. 커널 디버거를 통해 메모리 덤프 파일을 분석하여 이전 작동 중단을 검사하고 덤프가 올바르게 쓰여졌는지 확인합니다.

  7. 각 덤프 파일 형식에 대해 4-6단계를 반복합니다.

명령 구문

명령 설명

Crashdumptest.exe -c

과거의 오류를 지웁니다.

crashdumptest.exe -dtm -y [SymbolsDirectory] -ypass

테스트를 초기화합니다.

crashdumptest.exe -autorun -y [SymbolsDirectory] -dtm"

테스트를 실행합니다.

 

파일 목록

명령 옵션 설명

Crashdumptest.exe

[TestBinRoot]\nttest\driverstest\storage\wdk\

BugCheck.sys

[TestBinRoot]\nttest\driverstest\storage\wdk\

 

매개 변수

매개 변수 이름 매개 변수 설명
DebuggerDirectory 디버거를 설치할 디렉터리입니다.
SymbolsDirectory 기호가 이미 설치된 디렉터리입니다.
LLU_LclAdminUsr 테스트를 실행하기 위한 사용자 계정입니다.
LLU_NetAccessOnly 테스트 파일 공유에 액세스하기 위한 사용자 계정입니다.
PagefileSize 페이지 파일 크기(MB)(mem+N 형식 지원)