Как сделать окно ".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"
Что это делает?
Запускает отладчик, прикрепляет к файлу дампа, НЕТ запроса на сохранение настроек рабочего пространства, Открывает мое "Внутреннее" рабочее пространство (созданное мной именованное рабочее пространство) и запускает эти команды для загрузки расширений отладчика, настроек настройки и создания псевдонимов, которые облегчают мою жизнь,
Это сработало для меня, чтобы закрепить окно команд по умолчанию:
- Откройте WinDbg. Не открывайте файл дампа. Просто откройте приложение.
- Нажмите меню Вид - Команда
- Нажмите меню Окно - Закрепить все
- Нажмите меню «Файл» — «Сохранить рабочую область».