2010-08-09 21 views
5

¿Es posible utilizar comandos windbg como !locks y .loadby sos mscorwks desde la ventana de comandos de Visual Studio (en una sesión de depuración)? Me he dado cuenta de que puedo usar, por ejemplo, k para imprimir un seguimiento de la pila, por lo que me preguntaba si hay alguna forma de acceder a los otros comandos.Usando windbg de Visual Studio

Respuesta

7

Sí, puedes hacer esto.

  1. Adjunte Visual Studio 2008 a su proceso para la depuración.
  2. Break en algún código.
  3. Ir a la ventana inmediata
  4. tipo !load sos
  5. Ahora usted es libre de utilizar cualquiera de los comandos de WinDbg como !EEHeap,!DumpHeap

Hay algunas condiciones. Debe habilitar la depuración del código no administrado en las propiedades de su proyecto. Normalmente en la versión de 64 bits, el estudio no es compatible con esto.

Diviértete.

+0

genial, gracias por eso. ¿Alguna idea de si puedo acceder a las llamadas windbg no gestionadas como bloqueos o analizar? – ngoozeff

+0

@ngoozeff: ¡Creo que solo los comandos de SOS son posibles! Alguien me corrige si estoy equivocado. – ferosekhanj

+8

Lamento ser quisquilloso aquí, pero esos no son comandos de WinDbg, sino de SOS. Lamentablemente, los comandos regulares de WinDbg no están disponibles desde VS afaik, lo que hace que sea un poco más difícil usar SOS. Además, VS no admite todas las interfaces IDebugClient necesarias, por lo que la salida de SOS es un poco ruidosa en VS. –

4

Visual Studio 2012 tiene el transporte "Windows User Mode Debugger" en el cuadro de diálogo "Adjuntar al proceso". Esto le permite usar comandos windbg en la ventana inmediata.

Fuente: Use the WinDbg Engine in Visual Studio User-Mode Debugging

+0

Tengo instalado Visual Studio 2012 Professional (Actualización 4). Sin embargo, el * Windows User Mode Debugger * transporte no aparece para mí. Algunas fuentes afirman que debe instalar el WDK encima de una instalación VS, pero la información confiable no parece estar disponible. Entonces, ¿cuál es el problema? – IInspectable

+0

Desde el enlace: 'Otra advertencia es que actualmente necesita instalar WDK en la parte superior de Visual Studio 11 para obtener la integración del depurador. No funcionó para mí tampoco hasta que instalé el WDK. –

+1

Puedo confirmar que la instalación de Windows 8.0 WDK en la parte superior de Visual Studio también instaló la integración de Visual Studio. Ahora puedo elegir * Depurador de modo de usuario de Windows * como transporte (o elegir otro depurador de la configuración * Debugger * de un proyecto). Parece que funciona de manera confiable, a pesar de que es lento para mí. Algunas funciones del depurador VS faltan (por ejemplo, * Traces *), mientras que otras han cambiado (por ejemplo, una sintaxis diferente para establecer los puntos de interrupción de la función). Los poderosos comandos de extensión de WinDbg como '! Handle' o'! Locks' ahora están disponibles desde la GUI de VS (* Ventana Inmediata del Depurador *). – IInspectable

2

Comenzando con el Kit de desarrollo de controladores de Windows (WDK) 8,0 el depurador de Windows está integrado en Visual Studio (ver Debugging Environments). La instalación de WDK en la parte superior de una instalación de Visual Studio permitirá a un desarrollador seleccionar un número de depuradores del diálogo Adjuntar al proceso, o establecer el motor de depuración en la configuración del Debugger de un proyecto. Esto se ha verificado para Visual Studio 2012 y 2013. La forma en que leo el enlace de MSDN anterior, esto también debería funcionar para cualquier otro IDE que sea compatible con WDK 8.0 y versiones posteriores.

Si bien WinDbg ofrece una gran cantidad de comandos potentes, también hay algunos inconvenientes. Esta lista no es exhaustiva y simplemente contiene los problemas que encontré:

  • No se puede conectar a más de un proceso a la vez. Aunque generalmente no es un problema, esto es bastante desafortunado, si necesita depurar más de un proceso a la vez. El depurador de Visual Studio se puede conectar a cualquier cantidad de procesos simultáneamente.
  • WinDbg no usará la configuración de símbolos de su IDE de Visual Studio (probado en VS 2012 Actualización 4). Si bien puede configurar el IDE donde buscar los símbolos de depuración, WinDbg no respetará esa configuración. WinDbg usará la variable de entorno _NT_SYMBOL_PATH, y/o la configuración establecida a través del .sympath.
  • Sintaxis diferente para los puntos de interrupción de la función. Esta es una pequeña molestia, ya que no puede usar la sintaxis de Visual Studio para especificar los puntos de corte de la función. Esto también significa que se ignoran los puntos de corte de la función que se han establecido utilizando la sintaxis de Visual Studio. Lo que es más molesto, sin embargo, se obtiene un cuadro de diálogo de advertencia para cada uno cuando se lanza un depurador.
  • No admite Tracepoints. He estado usando tracepoints extensivamente, para insertar intrincadamente el rastreo en un depurador. Si también está utilizando puntos de referencia, esto puede ser más que una molestia.
+1

El comando 'windbg'' 'bp' acepta un comando para ejecutar cuando se toca el punto de interrupción, por lo que puede emular un punto de rastreo. Por ejemplo, 'bp combase! CoSetErrorInfo" dt combase! CErrorObject% edx; g "' –

Cuestiones relacionadas