Realizar depuración utilizando Just-In-Time Debugger en Visual Studio
La depuración Just-in-Time puede iniciar Visual Studio automáticamente cuando se produce un error en una aplicación que se ejecuta fuera de Visual Studio o esta se bloquea. Con la depuración Just-In-Time, puede probar aplicaciones fuera de Visual Studio, y abrir Visual Studio para comenzar el proceso de depuración cuando se produce un problema.
La depuración Just-in-Time es compatible con aplicaciones de escritorio de Windows. No funciona para aplicaciones universales de Windows ni para código administrado hospedado en una aplicación nativa, como visualizadores.
Consejo (if the meaning of "Tip" is advice or suggestion)
Si solo desea que deje de aparecer el cuadro de diálogo del depurador Just-in-Time pero no tiene Visual Studio instalado, vea Deshabilitar el depurador Just-in-Time. Si alguna vez ha tenido instalado Visual Studio, puede deshabilitar la depuración Just-in-Time en el registro de Windows.
Habilitar o deshabilitar la depuración Just-In-Time en Visual Studio
Puede configurar la depuración Just-in-Time desde el cuadro de diálogo de Visual Studio Herramientas>Opciones (o Depurar>Opciones).
Nota
Para habilitar o deshabilitar la depuración Just-in-Time, debe ejecutar Visual Studio como administrador. Al habilitar o deshabilitar la depuración Just-In-Time, se establece una clave del Registro y es posible que se necesiten privilegios de administrador para modificar dicha clave. Para abrir Visual Studio como administrador, haga clic con el botón derecho en la aplicación de Visual Studio y elija Ejecutar como administrador.
Para habilitar o deshabilitar la depuración Just-In-Time:
En el menú Herramientas o Depurar, seleccione Opciones>Depuración>Just-In-Time.
Nota
Si no se muestra la opción de menú Just-In-Time, asegúrese de que el depurador Just-In-Time está instalado mediante el Instalador de Visual Studio.
En el cuadro Habilitar depuración Just-In-Time para estos tipos de código, seleccione los tipos de código que desea que depure la depuración Just-In-Time: Administrado, Nativo y/o Script.
Seleccione Aceptar.
Si habilita el depurador Just-in-Time pero no se abre cuando se produce un error en una aplicación o esta se bloquea, vea Solución de problemas de la depuración Just-in-Time.
Deshabilitar la depuración Just-in-Time en el registro de Windows
Es posible que la depuración Just-In-Time todavía esté habilitada aunque Visual Studio ya no esté instalado en el equipo. Si Visual Studio ya no está instalado, puede deshabilitar la depuración Just-In-Time editando el Registro de Windows.
Para deshabilitar la depuración Just-In-Time mediante la edición del Registro:
En el menú Inicio de Windows, ejecute el editor del Registro (regedit.exe).
En la ventana del Editor del Registro de, busque y elimine las siguientes entradas del Registro si existen:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
Elimine también las siguientes entradas del Registro si existen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
Asegúrese de no eliminar ni cambiar ninguna otra clave del Registro.
Cierre la ventana del Editor del Registro.
Habilitar la depuración Just-In-Time de una aplicación Windows Form
De forma predeterminada, las aplicaciones de Windows Forms tienen un controlador de excepciones de nivel superior que permite a la aplicación seguir ejecutándose si puede recuperarse. Si una aplicación de Windows Forms produce una excepción no controlada, se muestra el siguiente cuadro de diálogo:
Para habilitar la depuración Just-in-Time en lugar de un control de errores estándar de Windows Forms, agregue esta configuración:
En la sección
system.windows.forms
del archivo machine.config o <nombre de la aplicación>.exe.config, establezca el valor dejitDebugging
entrue
:<configuration> <system.windows.forms jitDebugging="true" /> </configuration>
En una aplicación de Windows Forms de C++, establezca también
DebuggableAttribute
entrue
en un archivo .config o en el código. Si compila con /Zi y sin /Og, el compilador establece este atributo automáticamente. Sin embargo, si quiere depurar una compilación de versión nooptimizada, debe establecerDebuggableAttribute
agregando la línea siguiente en el archivo AssemblyInfo.cpp de la aplicación:[assembly:System::Diagnostics::DebuggableAttribute(true, true)];
Para obtener más información, vea DebuggableAttribute.
Uso de la depuración Just-In-Time
Este ejemplo le guía a través de la depuración Just-in-Time cuando una aplicación produce un error.
Debe tener Instalado Visual Studio para seguir estos pasos. Si no tiene Visual Studio, puede descargar la versión gratuita Visual Studio Community Edition.
Asegúrese de que la depuración Just-in-Time está habilitada en Herramientas>Opciones>Depuración>Just-in-Time.
En este ejemplo, creas una aplicación de consola en C# en Visual Studio que lanza una NullReferenceException.
En Visual Studio, cree una aplicación de consola de C# (Archivo>Nuevo>Proyecto>Visual C#>Aplicación de consola) llamada ThrowsNullException. Para obtener más información sobre cómo crear proyectos en Visual Studio, consulte Tutorial: Creación de una aplicación sencilla.
Cuando el proyecto se abra en Visual Studio, abra el archivo Program.cs. Reemplace el método Main() por el código siguiente, que imprime una línea en la consola y, a continuación, inicia una excepción NullReferenceException:
static void Main(string[] args) { Console.WriteLine("we will now throw a NullReferenceException"); throw new NullReferenceException("this is the exception thrown by the console app"); }
Para compilar la solución, elija la configuración Depurar (predeterminada) o Versión y, a continuación, seleccione Compilación>Recompilar solución.
Nota
- Elija la configuración Depurar para obtener una experiencia de depuración completa.
- Si selecciona la configuración Versión, deberá desactivar Solo mi código para que este procedimiento funcione. En Herramientas>Opciones>Depuración, anule la selección de Habilitar Solo mi código.
Para obtener más información sobre las configuraciones de compilación, consulte Descripción de las configuraciones de compilación.
Abra la aplicación compilada ThrowsNullException.exe en la carpeta del proyecto de C# (...\ThrowsNullException\ThrowsNullException\bin\Debug o ...\ThrowsNullException\ThrowsNullException\bin\Release).
Debería ver la siguiente ventana de comandos:
Se abrirá el cuadro de diálogo Elegir depurador Just-in-Time.
En Available Debuggers (Depuradores disponibles), seleccione Nueva instancia de <versión o edición preferida de Visual Studio>, si aún no la ha seleccionado.
Seleccione Aceptar.
El proyecto ThrowsNullException se abre en una nueva instancia de Visual Studio, con la ejecución detenida en la línea que produjo la excepción:
Puede iniciar la depuración en este punto. Si va a depurar una aplicación real, deberá averiguar por qué el código está produciendo la excepción.
Advertencia
Si la aplicación contiene código que no es de confianza, aparece un cuadro de diálogo de advertencia de seguridad, lo que le permite decidir si desea continuar con la depuración. Antes de continuar con la depuración, decida si confía en el código. ¿Ha escrito el código usted mismo? Si la aplicación se ejecuta en una máquina remota, ¿reconoce el nombre del proceso? Si la aplicación se ejecuta localmente, considere la posibilidad de que el código malintencionado se ejecute en el equipo. Si decide que el código es confiable, seleccione OK. En caso contrario, haga clic en Cancelar.
Solución de problemas de depuración Just-In-Time
Si la depuración Just-in-Time no se inicia cuando una aplicación se bloquea, aunque esté habilitada en Visual Studio:
Un problema conocido de Windows podría provocar un error en el depurador Just-In-Time.
La solución consiste en agregar un valor DWORD de Automático, con los datos de valor de 1, en las siguientes claves del Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
(Para aplicaciones de 32 bits en máquinas de 64 bits) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
Los informes de errores de Windows podrían asumir el manejo de errores en su equipo.
Para corregir este problema, use el editor del Registro para agregar un valor DWORD de Deshabilitado, con los datos de valor de 1, a las siguientes claves del Registro:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting
(Para aplicaciones de 32 bits en máquinas de 64 bits) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows Error Reporting
Para obtener más información, vea Configuración de WER.
Es posible que vea los siguientes mensajes de error durante la depuración Just-in-Time:
No se puede adjuntar al proceso de bloqueo. El programa especificado no es un programa de Windows o MS-DOS.
El depurador intentó asociarse a un proceso que se ejecuta en otro usuario.
Para solucionar este problema, en Visual Studio, abra Depurar>Asociar al proceso (o presione Ctrl + Alt + P) y busque el proceso que desea depurar en la lista Procesos disponibles. Si desconoce el nombre del proceso, busque el identificador del proceso en el cuadro de diálogo Depurador Just-in-Time de Visual Studio. Seleccione el proceso en la lista de procesos disponibles y seleccione Asociar. Seleccione No para descartar el cuadro de diálogo del depurador Just-In-Time.
Depurador no se pudo iniciar porque ningún usuario ha iniciado sesión.
No hay ningún usuario que haya iniciado sesión en la consola, por lo que no hay ninguna sesión de usuario para mostrar el cuadro de diálogo de depuración Just-In-Time.
Para solucionar este problema, inicie sesión en la máquina.
Clase no registrada.
El depurador intentó crear una clase COM que no está registrada, probablemente debido a un problema de instalación.
Para solucionar este problema, use el Instalador de Visual Studio para reinstalar o reparar la instalación de Visual Studio.
Contenido relacionado
- Seguridad del depurador
- Primer vistazo al depurador
- Opciones, Depuración, Just-In-Time (cuadro de diálogo)
- Advertencia de seguridad: Adjuntar a un proceso que pertenezca a un usuario que no sea de confianza puede ser peligroso. Si la siguiente información le parece sospechosa o no está seguro(a), no participe en este proceso.