¿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
Sí, puedes hacer esto.
- Adjunte Visual Studio 2008 a su proceso para la depuración.
- Break en algún código.
- Ir a la ventana inmediata
- tipo
!load sos
- 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.
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
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
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. –
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
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.
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 "' –
- 1. Depuración remota con Visual Studio y servidor WinDbg
- 2. ¿Por qué utilizar WinDbg frente al depurador de Visual Studio (VS)?
- 3. ¿Mejores prácticas usando Git con Visual Studio?
- 4. usando Qt designer en visual studio?
- 5. Usando .dll en Visual Studio 2010 C++
- 6. ¿Se puede hacer Visual Studio para depurar procesos secundarios como WinDBG?
- 7. usando el compilador de Visual Studio C++ en NetBeans
- 8. C++ Visual Studio: vinculación usando el comentario de pragma
- 9. ¿Cómo depuro proyectos de Visual Studio usando VMware?
- 10. C# Visual Studio usando los archivos de recursos
- 11. Usando el compilador de Visual Studio 6 C++ desde Emacs
- 12. building boost Ejemplos de python usando Visual Studio 2008
- 13. Deshabilitar un proyecto de Visual Studio para crear usando cmake
- 14. Atajo de Visual Studio
- 15. Visual Studio SVN integración
- 16. Visual Studio 2010 "Mancha"
- 17. Visual Studio - "{}" configuración
- 18. Formateador de código Visual Studio
- 19. cmake y visual studio
- 20. Visual Studio Vs Visual Web Developer
- 21. saltos de Visual Studio construir
- 22. Visual Studio 2012 en comparación con Visual Studio 2010 (delta)
- 23. ¿Visual Studio 2010 RC funciona bien con Visual Studio 2008?
- 24. Aplicación de Visual Studio extremadamente lenta con depuración
- 25. Usando Visual Studio para desarrollar para C++ para Unix
- 26. Ejecutando gtest usando Visual Studio 2010: LNK4098 y LNK2005
- 27. gitignore no funciona (motivo encontrado) usando gitextensions en visual studio
- 28. ¿Cómo crear aplicaciones .NET independientes usando Visual Studio?
- 29. ¿Cómo construyo una imagen del kernel usando Visual Studio?
- 30. Desarrollando para Sharepoint 2003 usando Visual Studio 2008?
genial, gracias por eso. ¿Alguna idea de si puedo acceder a las llamadas windbg no gestionadas como bloqueos o analizar? – ngoozeff
@ngoozeff: ¡Creo que solo los comandos de SOS son posibles! Alguien me corrige si estoy equivocado. – ferosekhanj
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. –