クラッシュダンプのサポート テスト (ロゴ)
このテストでは、システム停止エラーが発生した後に、Windows 上の記憶域ミニポート ドライバーがメモリ ダンプ ファイルの作成をサポートしているかどうかを確認します。
テストの詳細
仕様 |
|
プラットフォーム |
|
サポートされているリリース |
|
予想される実行時間 (分) | 45 |
カテゴリ | シナリオ |
タイムアウト (分) | 2700 |
再起動が必要です | false |
特別な構成が必要です | true |
Type | automatic |
その他のドキュメント
この機能領域のテストには、前提条件、セットアップ、トラブルシューティング情報など、次のトピックに記載されている追加のドキュメントが含まれている場合があります。
テストの実行
テストを実行する前に、テストする記憶域コントローラーの種類に関するテスト要件の説明に従って、テストのセットアップを完了します。 詳細については、「記憶域アダプターまたはコントローラーのテストの概要」を参照してください。
このテストには、追加のソフトウェアとハードウェアが必要です。
テスト対象のデバイス
パーティション C: に 20GB 以上の空き容量のあるハードディスク。
テストを実行する前に、次の前提条件も満たす必要があります。
テスト システムがインターネットに接続されている場合、アクションを実行する必要はありません。
テスト システムがインターネットに接続されていない場合、C:\Symbols という名前のフォルダーを作成し、Windows オペレーティング システムのシンボルをダウンロードしてインストールします。 これを行うには、次の手順に従います。
Note
ダンプ ファイルを分析するには、シンボルが必要です。 シンボルのインストール失敗は、このテストが失敗する原因となる、最もよくみられるテスト セットアップの問題です。 シンボルのバージョンは、テスト コンピューターにインストールされているオペレーティング システムのバージョンと一致している必要があります。 そのため、キットの外部にダウンロードする必要があります。
インターネットに接続されているコンピューターで、Windows シンボルパッケージをダウンロードします。 詳細については、「Windows シンボル パッケージのダウンロード」を参照してください。
シンボル ファイルをテスト用コンピューターにコピーし、C:\Symbols フォルダーにコピーします。 シンボルは大きくなる可能性があるため、 ntkrnlmp.pdb (x64 または Arm の場合) または ntkrpamp.pdb (x86 の場合) のみをコピーする必要があります。
トラブルシューティング
HLK テスト エラーの一般的なトラブルシューティングについては、「Windows HLK テストのエラーのトラブルシューティング」を参照してください。
トラブルシューティング情報については、「Device.Storage テストのトラブルシューティング」を参照してください。
テストログのエラーメッセージ "正しいシンボルを読み込めませんでした"
再起動時に、テストによってダンプ ファイルが正しいかどうかが検証されます。 このテストでは、開発者と同じように、カーネル デバッガー kd を使用します (「Windows 用デバッグ ツールのダウンロードとインストール」を参照してください)。 ダンプ ファイルを分析するには、デバッガーがシンボルにアクセスできる必要があります (「シンボル ファイル」を参照してください)。 これはダンプの辞書です。 これにより、デバッガーはメモリ (またはクラッシュ ファイル) の内容を個々のモジュール (実行可能ファイル、ライブラリ、ドライバーなど)、それらのモジュール内の関数、およびデータ構造に分析できます。 原則として、カーネル デバッガーを使用してダンプ ファイルを調べられない場合、テストは成功しません。
テストが正常に実行されるには、それがデバッガーにシンボルを提供する必要があります。 適切なシンボルがない場合、テストの最初の分析フェーズでログ エラーが発生したときに警告がログに記録されます。 これを行うための現状のメカニズムとして、パブリック シンボル パッケージをダウンロードし (「Windows シンボル パッケージのダウンロード」を参照)、テストを実行する前にテスト コンピューターにインストールします。 シンボルがインストールされていない場合、またはテスト対象のオペレーティング システムと一致しない場合、テスト ログに次のメッセージが表示されることがあります。
(x) 正しいシンボルを読み込めませんでした。
(i) オペレーティング システム シンボルをインストールする方法については、WDK のドキュメントを参照してください。
(i) シンボルが古くなっている可能性があります。Microsoft シンボル サーバーを使用してシンボルを更新してください。
このメッセージでは、実際にはテストが失敗することはありません。これは、場合によっては、部分的に一致するシンボルを使用してダンプを分析できるためです。 テストが続行し、さらに多くのテスト ケースが失敗し、...のアドレスの取得中のエラーまたは...を取得できませんなどのメッセージがエラーで表示される場合、シンボルがないため、デバッガーがダンプを分析できないことを意味します。 シンボルを回避する方法の 1 つとして、インターネットシンボル サーバーからキャッシュされたシンボルで、ローカルにインストールされ、パッケージ化されたシンボルを補完する方法があります。 シンボルをローカルにキャッシュするには、次の手順に従います。
既にクラッシュ ダンプが作成されていることを確認します。 これを行う最も簡単な方法は、テストを 1 回実行して失敗させることです。
デバッグ ツールがインストールされていることを確認します。 ここでも、テストを 1 回実行するのが最も簡単な方法です。 これでツールが C:\Debuggers にインストールされます。
管理者特権でのコマンド プロンプトを開きます。
次のコマンドを入力します
c:\Debuggers\kd -z c:\Windows\MEMORY.DMP -y SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
これにより、Microsoft のリモート シンボル ストアと、シンボルをキャッシュするためのダウンストリーム ストアとしてローカル ディレクトリ C:\Symbols を使用して、カーネル デバッガーにダンプが読み込まれます。
Ntoskrnl.exe や NTDLL などのオペレーティング システムファイルにシンボルがあることを確認します。 これらのファイルはダンプを分析するために必要です。 サードパーティのドライバーなど、他のモジュールのシンボルの読み込み中にエラーが表示された場合は問題ありません。
これで、プロンプト 0: kd> が表示されます。 このコマンド プロンプトで、コマンド「.reload /f」を入力します。 このコマンドは、ダンプに読み込まれたモジュールのすべてのシンボルを、デバッガーに強制的に読み込んでキャッシュさせます。
デバッガーを終了するには、Ctrl+B キーを押してから Enter キーを押します。
テストは、エラー メッセージ "フル ダンプを行うには、ページング ファイルのサイズが小さすぎます" をログに記録します"
クラッシュが発生した場合、オペレーティング システムのどの部分が依然として機能するかは確実ではありません。 ネットワークまたはファイル システムのドライバーが原因でクラッシュが発生した可能性があります。たとえば、ファイル システム構造へのアクセスを禁止してダンプ ファイルを作成したり、ネットワークへのアクセスを禁止してファイルをリモートに保存したりします。 オペレーティング システムは、すでに存在していることがわかっているファイル (ページ ファイル) を使用してこれを処理し、ディスク上のそのファイルの論理ブロック エクステントに直接書き込みます。 ダンプ プロセスでは、物理メモリの内容がシステム ディスク上のページ ファイルに書き込まれます (通常は c:\pagefile.sys)。 ページ ファイルは、ダンプを格納するのに十分な大きさでなければなりません。 最も大きなダンプは、完全モード ダンプです。これには、物理メモリのサイズ (4096 など) に加えて、ヘッダー情報を格納するための追加のメガバイト数が必要です。 テストでは、実行前にユーザーがページファイルを適切なサイズに構成する必要があります。 ページ ファイルのサイズが十分でない場合は、初期化フェーズ中に次のエラーがログに記録されます。
(i) ページング ファイルのサイズを確認しています。
(x) ページング ファイルのサイズが小さすぎるため、完全モードのダンプを行うことができません。
(i) ページング ファイルのサイズ: 330989568
(i) 物理メモリのサイズ: 1073094656
(i) ページング ファイルの最小サイズを物理 RAM サイズ + 1MB に構成してください。
システム停止エラー (ブルースクリーン) が表示されますが、バグチェック コードは E2 ではありません
いくつかの基本的な設定の検証が行われた後、システムのクラッシュに使用するドライバーがテストによってインストールされ、システムが再起動します。 再起動後、テストによってクラッシュ制御設定 (完全モード メモリ ダンプ用) が変更され、古いダンプ ファイルが削除されて、システムがクラッシュします。 クラッシュの時点では、クラッシュの性質の詳細を示すバグチェック画面 (ブルー スクリーン) がシステムによって表示されます。 バグチェックの種類は、MANUALLY_INITIATED_CRASH (e2) にする必要があります。 他の項目がここに表示される場合、ダンプ ファイルの書き込み処理中に 2 番目のバグチェックが発生したことを意味します。 これは、カーネル デバッガーをテスト クライアントに接続し、記憶域アダプター ドライバーをデバッグして調査する必要があります。
テストが、エラーメッセージ "ダンプ ファイルは別のプロセスで使用されています。 HRESULT: 0x80070020" をログに記録します。
ダンプ ファイルが作成されると、テスト コンピューターは自動的に再起動します。 クラッシュ後に再起動すると、オペレーティング システムがページ ファイル内のダンプ情報の存在を検出し、ダンプの書き込み処理を開始します。 このプロセスは、コンピューターが起動している間、およびユーザーがログインした後でも非同期に発生します。 このプロセス中は、ダンプ ファイル (C:\windows\memory.dmp) のサイズをチェックするか、タスク マネージャー (werfault.exe) でプロセスを表示することで、進行状況を確認できます。 このプロセスと同時にテストが実行中であることが多く、その場合同じダンプ ファイルにアクセスしようとします。 これが発生すると、ログに次のメッセージが表示されます。
(i) ダンプ ファイルへの接続: C:\Windows\MEMORY.DMP
(i) ダンプ ファイルが別のプロセスによって使用されています。 HRESULT: 0x80070020
(i) 通常、RAM が大きいため memory.dmp がまだ書き込まれている最中です。5 分後に再試行してください。
テストでは、その後にファイルへのアクセスを再試行する必要があります。 エラー メッセージ コードが異なる場合、または変更されている場合 (たとえば、0x80070002: ERROR_FILE_NOT_FOUND)、ファイルをディスクに書き込むことができなかったことを意味します。 重要なデバッグ情報を得るために最初に確認するのは、システム イベント ログです。 イベントログを表示するには、[スタート] をクリックし、[実行] をクリックして、「compmgmt.msc」と入力します。 [コンピューターの管理] ウィンドウで、[コンピューターの管理]、[イベント ビューアー]、[システム] の順番に選択します。 イベントの一覧を参照し、ソース BugCheck が含まれるイベントを確認します。 ダンプ ファイルが見つからない場合の最も一般的な原因は、ディスクの空き領域が不足していることです。 レジストリ キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\MachineCrash には、(再起動前の) 最後のクラッシュに関する情報が (作成された場合は、部分的なダンプ ファイルも) 含まれています。 これは、他の不明なダンプの問題をデバッグするときに役立ちます。
詳細
クラッシュダンプは、システム停止エラーが発生した後に、オペレーティング システムが記憶域アダプター ドライバーを呼び出して、メモリの内容をダンプ ファイルに書き込むメカニズムです。 システム停止エラーの性質により、オペレーティング システムはシステムの安定性について推測できません。 そのため、記憶域ドライバーで使用できるシステム サービスはごくわずかです。 クラッシュのサポートテストでは、これらの制約された環境でも記憶域アダプター ドライバーが動作し、I/O を実行してダンプに正常に書き込むことができるかどうかを確認します。
Windows オペレーティング システムでは、次の 3 つの異なる種類のメモリ ダンプ ファイルを生成できます。
完全
カーネル
最小
テストでは、カーネルとミニ ダンプ ファイルの種類がテストされます。 これらのダンプ ファイルの種類の詳細については、「カーネルモード ダンプ ファイル」を参照してください。
テストでは、次の一連の操作が完了します。
%SystemDrive%\Debuggers ディレクトリに Windows 用のデバッグ ツールをインストールし、システムを初期化します。
テスト ドライバーをインストールしてクラッシュをシミュレートします。
ページ ファイルのサイズを設定します。
システム停止エラー (ブルー スクリーン) をバグチェック コード0x000000E2 でシミュレートします。
システムを再起動すると、テストが自動的に再起動します。
カーネル デバッガーを使用してメモリ ダンプ ファイルを分析し、以前のクラッシュを調べ、ダンプが正しく書き込まれたことを確認します。
ダンプ ファイルの種類ごとに手順 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 形式をサポート) |