
Фронт-енд на PowerShell для Windows Debugger Engine.
Интерфейс PowerShell для отладчика Windows.
Готовы табулировать свой путь к успеху? Для быстрого знакомства посмотрите Начало работы.
Этот проект не создан, не одобрен и не контролируется командой отладчика Windows.
Команда отладчика приветствует обратную связь по своему API и интерфейсам (windbg, kd и др.), но они не имеют никакого отношения к этому проекту. Не отправляйте ошибки или отзывы команде отладчика касательно этого проекта.
Это не финансируемый проект: ему не выделены официальные ресурсы, над ним работают только добровольцы. Не берите на себя производственные зависимости от этого проекта, если вы не готовы полностью поддерживать его самостоятельно. Не стесняйтесь оставлять Issues и отправлять Pull Requests, но имейте в виду, что из-за ограниченных волонтёрских ресурсов обработка ваших вкладов может занять некоторое время.
Это экспериментальный проект: он не до конца проработан, и вы должны ожидать, что критические изменения будут вноситься часто.
Следствие из вышеуказанных отказов: я бы избегал подключения DbgShell к живым целям высокой ценности.
https://aka.ms/dbgshell-latest
Вы когда-нибудь пытались автоматизировать что-то в отладчике? (cdb/ntsd/kd/windbg) Как успехи?
Основная движущая сила DbgShell — это то, что автоматизировать что-либо в отладчике слишком сложно. Конечно, на сегодняшний день существуют средства для автоматизации отладчика. Но, на мой взгляд, они не удовлетворяют потребностям людей.
Цель проекта DbgShell — принести все преимущества объектно-ориентированного мира PowerShell в мир отладки. Когда вы выполняете 'dt' для дампа 'объекта', вы должны получить реальный объект. Скриптинг должен быть таким же простым, как написание скрипта PowerShell.
Проект DbgShell предоставляет интерфейс PowerShell для dbgeng.dll, включая:
Пользовательский хост по-прежнему является программой на основе командной строки (conhost.exe) (аналогично ntsd/cdb/kd), но его можно вызвать из windbg (!DbgShell).
Помимо значительного упрощения и расширения возможностей автоматизации, он будет решать и другие проблемы, такие как удобство использования для людей, которым не приходится часто использовать отладчики. (одна из жалоб, которую я слышал: «когда мне в конце концов приходится использовать windbg, я провожу всё время в .CHM»)
Для опытных пользователей windbg, с другой стороны, ещё одна цель — сделать переход максимально плавным. Так, например, провайдер пространства имён — не единственный способ доступа к данным; вы по-прежнему можете использовать традиционные команды, такие как "~3 s", "k" и т.д.
Я имею в виду не только то, когда вы открываете текстовый редактор и пишете большой скрипт для выполнения чего-то сложного — я также имею в виду возможность создавать относительно простые вещи прямо в командной строке. Есть много ситуаций, когда вам хотелось бы использовать немного логики, но это не настолько большое или повторно используемое, что вы захотели бы его сохранять. Должно быть легко создавать «однострочники» вроде «остановиться на CreateFile, если открываемый файл находится на рабочем столе пользователя, а функция Blah находится в стеке».
Позвольте мне внести ясность: мне потребовалось примерно 4 года, чтобы «согреться» к PowerShell. Я считаю, что у него есть острые углы, аспекты, которые просто сложны, и множество ошибок как в дизайне, так и в реализации. Иногда это меня очень раздражает. Однако преимущества PowerShell убедительны и убедили меня, что это лучший выбор для этого проекта: