
Un front-end de PowerShell para el motor del depurador de Windows.
Un front-end de PowerShell para el motor de depuración de Windows.
¿Listo para tabular tu camino hacia la gloria? Para una introducción más rápida, echa un vistazo a Introducción.
Este proyecto no es producido, respaldado ni supervisado por el equipo de depuradores de Windows. Si bien el equipo de depuradores agradece los comentarios sobre su API y front-ends (windbg, kd, etc.), no tienen ninguna conexión con este proyecto. No reporte errores ni envíe comentarios al equipo de depuradores sobre este proyecto.
Este no es un proyecto financiado: no tiene recursos oficiales asignados y solo lo trabajan voluntarios. No adquiera ninguna dependencia de producción de este proyecto a menos que esté dispuesto a soportarlo completamente por su cuenta. Siéntase libre de crear Issues y enviar Pull Requests, pero comprenda que con los limitados recursos de voluntarios, puede pasar un tiempo antes de que sus envíos sean procesados.
Este es un proyecto experimental: no está completamente maduro, y debe esperar que se realicen cambios disruptivos a menudo.
Corolario de los descargos anteriores: Evitaría adjuntar DbgShell a objetivos en vivo de alto valor.
https://aka.ms/dbgshell-latest
¿Alguna vez has intentado automatizar algo en el depurador? (cdb/ntsd/kd/windbg) ¿Cómo te fue?
El principal impulso para DbgShell es que es demasiado difícil automatizar cualquier cosa en el depurador. Por supuesto, existen facilidades hoy en día para ayudar a automatizar el depurador. Pero en mi opinión no están satisfaciendo las necesidades de la gente.
El objetivo del proyecto DbgShell es traer la bondad del mundo de PowerShell basado en objetos al mundo de la depuración. Cuando haces 'dt' para volcar un 'objeto', deberías obtener un objeto real. El scripting debería ser tan fácil como escribir un script de PowerShell.
El proyecto DbgShell proporciona un front-end de PowerShell para dbgeng.dll, incluyendo:
El host personalizado sigue siendo un programa de línea de comandos (basado en conhost.exe) (análogo a ntsd/cdb/kd), pero se puede invocar desde windbg (!DbgShell).
Además de hacer la automatización mucho más fácil y potente, también abordará otras preocupaciones, como la facilidad de uso para personas que no tienen que usar los depuradores tan a menudo. (una queja que he escuchado es que 'cuando termino necesitando usar windbg, paso todo mi tiempo en el .CHM')
Para los usuarios experimentados de windbg, por otro lado, otro objetivo es hacer la transición lo más fluida posible. Así, por ejemplo, el proveedor de espacio de nombres no es la única forma de acceder a los datos; todavía puedes usar comandos tradicionales como '~3 s', 'k', etc.
No me refiero solo a ese tipo de cosas donde abres un editor de texto y escribes un gran script para hacer algo complejo; también me refiero a poder crear cosas relativamente simples directamente en la línea de comandos. Hay muchas situaciones en las que te gustaría poder usar un poco de lógica, pero nada tan grande o reutilizable que incluso quisieras guardarlo. Debería ser fácil crear 'one-liners' como 'detener en CreateFile si el archivo que se abre está en el escritorio del usuario y la función Blah está en la pila'.
Déjame ser claro: me tomó aproximadamente 4 años 'calentarme' con PowerShell. Siento que tiene bordes afilados, aspectos que son simplemente difíciles, y muchos errores, tanto en diseño como en implementación. A veces realmente me irrita. Sin embargo, los beneficios de PowerShell son convincentes, y me han convencido de que es lo mejor para usar en este proyecto: