переключение на пользовательский стек в дампах ядра

Есть ли способ переключиться в пользовательский режим определенного процесса в дампе ядра во время посмертной отладки?

Я помню, как делал это во время отладки в реальном времени с помощью команды .process.


person user3279954    schedule 07.03.2014    source источник


Ответы (5)


.process также работает в дампах ядра. Во-первых, вы можете найти свой процесс, используя

!process 0 0 myprocess.exe

а затем переключитесь на этот процесс, используя

.process <address>

где ‹address› — шестнадцатеричное число после ПРОЦЕСС.

Обратите внимание, что вы все еще отлаживаете ядро, и у вас есть только физическая память этого процесса (он же рабочий набор). Большая часть виртуального адресного пространства, вероятно, перенесена на диск, и вы не можете анализировать этот процесс, как в пользовательском режиме (особенно для программ .NET, где вам нужна полная куча .NET).

person Thomas Weller    schedule 07.03.2014

В качестве дополнения к ответу Томаса вы можете использовать .process /p /r . Это установит контекст пользовательского режима и перезагрузит символы пользовательского режима. Это позволит вашим последующим командам потока в этом новом контексте процесса отображать сторону пользовательского режима стека. Вы можете пропустить навигацию по процессу, если знаете свой целевой поток, используя .thread /p /r .

person JasonE    schedule 01.04.2014

  1. Найти идентификатор процесса

    !process 0 0 process.exe введите здесь описание изображения

  2. Использование ProcessID для поиска ThreadID

    !process <ProcessID> введите здесь описание изображения

  3. Переключиться на ветку

    .thread /p /r <ThreadID>

person Judy Li    schedule 30.08.2016

У меня есть статья, в которой рассказывается о проблемах, связанных с этим, и о лучших способах сделать это как в сценариях отладки живого дампа, так и в сценариях аварийного дампа:

http://www.osronline.com/article.cfm?id=576

person snoone    schedule 03.04.2014

Расширение !dml_proc обеспечивает удобный способ переключения в пользовательский режим процессов с меню, нарисованным в разметке DML: пример.

person AvImd    schedule 14.01.2016