Этот простой запрос оказывается действительно сложным. Позиции окна WinDbg сохраняются в рабочей области. WinDbg имеет несколько рабочих областей по умолчанию:
- База - это рабочее пространство, которое используется перед началом отладки (нет открытого дампа, нет открытого exe-файла, ничего не прикреплено)
- Для каждого файла дампа - для каждого открытого дампа у вас есть рабочее пространство для этого файла
- Для каждого исполняемого файла - для каждого исполняемого файла, который вы открываете.
- Режим пользователя - используется при отладке в режиме реального времени
- Режим ядра - используется при отладке в режиме ядра
- На архитектуру машины - 1 для x64, 1 для x86 и 1 для IA64
- Удаленный - используется при удаленной отладке
Для любого данного типа отладки (т. Е. Живого пользовательского режима или анализа дампов после вскрытия) вы обычно получаете комбинацию настроек Base + Ваш тип отладки.
Если вы откроете файл дампа, вы получите 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; .ableable_unicode 1; .ignore_missing_pages 1; .logopen / t C: \ Пользователи \ 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 "
Что это делает?
Запускает отладчик, прикрепляет к файлу дампа, НЕТ запроса на сохранение настроек рабочего пространства, Открывает мое «Внутреннее» рабочее пространство (созданное мной именованное рабочее пространство) и запускает эти команды для загрузки расширений отладчика, настроек и создания псевдонимов, которые делают моя жизнь легче.