アクティブメモリダンプ
皆様、アクティブメモリダンプはご存知でしょうか。Windows 10 から追加された新しいダンプファイルの形式です。
いかがお過ごしでしょうか。WDK サポートチームの石沢です。
アクティブメモリダンプは、その特徴として、完全メモリダンプよりファイルサイズを抑えられることが挙げられます。
また、カーネルメモリダンプには存在しない、一部のユーザー空間のメモリ情報が付加されることも挙げられるでしょう。
上記のような特徴から、完全メモリダンプを出力するほどストレージの空き容量に余裕がない、出力に時間がかかってしまう、またカーネルメモリダンプでは情報が足りないという場合の選択肢として考えられます。
もちろんデバッグ時に、潤沢なリソースや環境がある場合は、完全メモリダンプを取得いただくことをお勧めいたします。
取得方法はいたって簡単!
先日の津田さんが執筆された記事「完全メモリダンプ採取の設定方法」の手順 (4) では [完全メモリダンプ] を選択しているのですが、こちらを [ アクティブ メモリ ダンプ] に変更するだけです。
あとはダンプファイルを生成して、コールスタックを確認すれば…ユーザー空間の情報が残っていることが確認できますね!
以下の例では、ntdll や USER32 などのユーザー空間上の処理がコールスタックから確認することができています。
kd> k ChildEBP RetAddr (…略…) 0008f5d4 76f75b83 NotMyfault+0x21f9 0008f600 76f56d5a USER32!_InternalCallWinProc+0x2b 0008f688 76f565dd USER32!UserCallDlgProcCheckWow+0x102 0008f6dc 76f72b32 USER32!DefDlgProcWorker+0xad 0008f6f8 76f75b83 USER32!DefDlgProcA+0x22 0008f724 76f59d1a USER32!_InternalCallWinProc+0x2b 0008f7bc 76f59af5 USER32!UserCallWinProcCheckWow+0x1aa 0008f818 76f62e7f USER32!DispatchClientMessage+0xb5 0008f848 778618a6 USER32!__fnDWORD+0x3f 0008f878 76f79d5a ntdll!KiUserCallbackDispatcher+0x36 0008f87c 76f5914e USER32!NtUserMessageCall+0xa 0008f8dc 76f58fe7 USER32!SendMessageWorker+0xee 0008f900 67b0959b USER32!SendMessageW+0xe7 0008f920 67b484aa COMCTL32!Button_NotifyParent+0x39 0008f938 67b3e853 COMCTL32!Button_ReleaseCapture+0x97 0008f988 76f75b83 COMCTL32!Button_WndProc+0x7e3 0008f9b4 76f59d1a USER32!_InternalCallWinProc+0x2b 0008fa4c 76f59860 USER32!UserCallWinProcCheckWow+0x1aa 0008faac 76f55a2b USER32!DispatchMessageWorker+0x1a0 0008fad4 67ae22ef USER32!IsDialogMessageW+0xdb 0008faf4 67ae2228 COMCTL32!Prop_IsDialogMessage+0x2f 0008fb48 67ae2433 COMCTL32!_RealPropertySheet+0x211 0008fb5c 67b95b14 COMCTL32!_PropertySheet+0x34 0008fba0 00a7262f COMCTL32!PropertySheetA+0x44 0008fc9c 00a727dc NotMyfault+0x262f 0008fd2c 752d95f4 NotMyfault+0x27dc 0008fd40 777f22ca KERNEL32!BaseThreadInitThunk+0x24 0008fd88 777f2299 ntdll!__RtlUserThreadStart+0x2b 0008fd98 00000000 ntdll!_RtlUserThreadStart+0x1b |
プロセスによってはユーザー空間の情報が残っていないため、その点ご注意いただきながら、利用場面に応じてご活用ください。
ではまたお会いいたしましょう!
WDK サポートチーム 石沢 望夢