Как сделать окно ".cmdtree" при запуске в WinDbg?

Я следил за блогом Тесс Феррандез за настройкой пользовательской темы в WinDbg.

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

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

Есть идеи?

2 ответа

Решение

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

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

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

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

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

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

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

Проблема, с которой вы сталкиваетесь, заключается в том, что для того, чтобы все было настроено так, как вы этого хотите, вы должны иметь отладчик в активном состоянии (exe open, dump dump open, live debugging) и когда вы идете, чтобы сохранить расположение окон. Он также сохранит, какой 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"

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

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

Это сработало для меня, чтобы закрепить окно команд по умолчанию:

  1. Откройте WinDbg. Не открывайте файл дампа. Просто откройте приложение.
  2. Нажмите меню Вид - Команда
  3. Нажмите меню Окно - Закрепить все
  4. Нажмите меню «Файл» — «Сохранить рабочую область».
Другие вопросы по тегам