Как я делаю '.cmdtree' прикреплением окна при запуске в WinDbg?

Я следовал за Tess Ferrandez' блог для установки пользовательской темы в WinDbg.

Я также начал запускать WinDbg автоматически с-c ".cmdtree c:\mycmdtree.txt"

Это правильно открывает мой cmdtree файл как окно команд, но я не могу заставить его прикрепляться правильно. Проблема, кажется, что окна 'команд' могут только быть открыты после открытия файла DMP но открытие файла DMP переключает Вас из 'основной' рабочей области, поэтому любые изменения в Вашей рабочей области не сохраняются.

Какие-либо идеи?

5
задан pj4533 16 April 2010 в 18:03
поделиться

1 ответ

Этот простой запрос оказывается действительно сложным. Расположение окон WinDbg сохраняется в рабочем пространстве. WinDbg имеет несколько рабочих пространств по умолчанию:

  • Базовое - это рабочее пространство, которое используется перед началом отладки (дамп не открывается, исполняемый файл не открывается, ни к чему не прикреплен).
  • Для каждого файла дампа - для каждого открываемого дампа вы иметь рабочую область для этого файла
  • На исполняемый файл - для каждого исполняемого файла, который вы открываете.
  • Пользовательский режим - используется при отладке в режиме реального времени в пользовательском режиме
  • Режим ядра - используется при отладке в режиме ядра
  • Машинная архитектура - 1 для x64, 1 для x86 и 1 для IA64
  • Удаленный - используется при удаленной отладке.

Для любого заданного типа отладки (например, в режиме реального времени или анализ дампов после вскрытия) вы обычно получаете комбинацию настроек «Базовый» + «Ваш тип отладки».

Если вы открываете файл дампа, вы получаете BASE + Per dump file Если вы выполняете отладку в пользовательском режиме, вы получаете BASE + User-mode Если вы выполняете отладку ядра в реальном времени на машине x64 , вы получите BASE + Kernel-mode + x64

Все изменения, которые вы делаете в любом заданном режиме, сохраняются в рабочей области, которая перекрывалась последней. Это означает, что если мы откроем файл дампа (то есть мы используем Base + Per dump), любые изменения в настройках будут сохранены в рабочей области для этого дампа.

Помимо встроенных рабочих пространств и всех их комбинаций, существуют именованные (клиентские) рабочие пространства. Это произойдет, когда вы перейдете в меню «Файл»> «Сохранить рабочую область» и укажете имя для сохранения всех ваших настроек, которые затем можно будет включить при запуске Windbg с помощью аргумента командной строки -W.

Вернемся к вашему вопросу. Как я могу открыть .cmdtree? В базовом рабочем пространстве нельзя. Многие окна доступны только тогда, когда отладчик НЕ находится в спящем состоянии (в своем рабочем пространстве BASE). Эти окна становятся доступными, как только вы переводите отладчик в любое из его активных состояний.

Проблема, с которой вы сталкиваетесь, заключается в том, что для того, чтобы все было настроено так, как вы хотите, у вас должен быть отладчик в активном состоянии (открытие exe, открытие дампа, отладка в реальном времени) и когда вы переходите в режим сохранения макет окна, он также сохранит, какой исполняемый файл вы открыли, дамп или отладку в реальном времени, которую вы выполняли.

Лучше всего просто делать то, что вы уже делали, а именно использовать -c в реестре (HKEY_CLASSES_ROOT \ WinDbg.DumpFile.1 \ shell \ Open \ command). Это позволит вам просто дважды щелкнуть дамп и получать эти параметры командной строки каждый раз, когда вы выполняете анализ дампа.Затем вы можете создать ярлык для windbg, который также включает командную строку, поэтому эти настройки будут применяться для других типов отладки, которую вы выполняете.

Вот моя командная строка из приведенного выше regkey:

"c: \ debuggers \ x64 \ windbg.exe" -z "% 1" -Q -W Internal -c ".load winde.dll; .enable_unicode 1; .ignore_missing_pages 1; .logopen / t C: \ Users \ jasone \ Logs \ debug.log; aS .p .process / p / r; aS .t .thread / p / r; aS! P! Process; as ! t! thread; aS .f .frame; aS dv dv / V / i / t; aS .f .frame "

Что это делает?

Запускает отладчик, присоединяется к файлу дампа, НЕТ запроса на сохранить настройки рабочей области, открыть мою «внутреннюю» рабочую область (именованную рабочую область, которую я создал) и запустить эти команды, чтобы загрузить расширения отладчика, настроить параметры и создать псевдонимы, которые облегчат мою жизнь.

7
ответ дан 14 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: