2010-02-17 11 views
7

Pregunta: Necesito desactivar el aviso de depuración de la aplicación de la consola.Deshabilitar el aviso de depuración en el bloqueo de la aplicación

Antecedentes: Tenemos una aplicación que sincroniza información con un tercero que se estrella debido a problemas de conectividad con la tercera parte en ciertos momentos del día. No tenemos acceso al código fuente para atrapar el error correctamente, así que solo necesito que la aplicación falle y vuelva a intentarlo. Tengo otra aplicación que monitorea nuestra herramienta de sincronización para asegurarse de que se está ejecutando.

cuando las aplicaciones de sincronización fallan, hay un aviso de depuración que requiere una interacción de los usuarios. Como esto permanece en la pantalla, la aplicación nunca deja de ejecutarse. Como resultado, la "comprobación de salud " nunca sabe del error.

He hecho esto hace aproximadamente 2 años, pero por mi vida no puedo recordar el artículo o la ruta de registro necesaria.

Gracias, Brian

OS: Windows 2003 Server Tipo Aplicación: .NET 3.5 Aplicación de consola


REVISIÓN: encontrado por: John Knoeller

Deletreo e las siguientes teclas

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug \ depurador HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ DbgManagedDebugger

+1

La comunidad wiki respuesta aceptada en http://stackoverflow.com/questions/3561545/how-to-terminate-a-program -cuando-se-bloquea-que-debería-simplemente-falla-una-prueba-a/3637710 # 3637710 es también un recurso muy útil. – PJTraill

+0

Similar: https://stackoverflow.com/questions/735170/can-the-application-error-dialog-box-be-disabled – Vadzim

Respuesta

9

Posiblemente esto?

How to: Enable/Disable Just-In-Time Debugging

Las claves de registro son

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger 
+0

EXACTAMENTE !! ¡Gracias! Nota: baje hasta la ruta del registro si u no tiene VS instalado HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug \ depurador HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ DbgManagedDebugger depuración JIT – used2could

+0

ni siquiera entrar en mi mente al buscar en Google – used2could

2

solución de Juan como un archivo .reg (teníamos que rodar esto a un grupo de servidores de compilación):

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug] 
"Debugger"=- 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] 
"DbgManagedDebugger"=- 
6

Borrado llaves enteras parece un enfoque demasiado "martillo".

Primero, se pueden usar las funciones de API de Windows SetErrorMode y/o SetThreadErrorMode. También pueden ser invocadas desde la aplicación .NET.

Las firmas relacionados sobre PInvoke son:

public enum ErrorMode : uint 
    { 
     SEM_DEFAULT     = 0x0000, 
     SEM_FAILCRITICALERRORS  = 0x0001, 
     SEM_NOGPFAULTERRORBOX  = 0x0002, 
     SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, 
     SEM_NOOPENFILEERRORBOX  = 0x8000 
    } 

    [DllImport("Kernel32.dll")] 
    public static extern ErrorMode SetErrorMode(ErrorMode mode); //available since XP 

    [DllImport("Kernel32.dll")] 
    public static extern ErrorMode GetErrorMode(); //available since Vista 

    [DllImport("kernel32.dll", SetLastError = true)] 
    public static extern bool SetThreadErrorMode(ErrorMode newMode, out ErrorMode oldMode); //available since Windows 7 

    [DllImport("Kernel32.dll")] 
    public static extern ErrorMode GetThreadErrorMode(); //available since Windows 7 


En segundo lugar, no es una solución más específica basada en el Registro desde Vista:
la única excepción de esta solicitud de que se está depurando.Ver esto:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb204634(v=vs.85).aspx

Copiar y pegar:

Excluyendo una aplicación desde automática Depuración

El siguiente procedimiento describe cómo excluir una aplicación de depuración automática después de que el valor de auto bajo el AeDebug clave se ha establecido en 1.

- > Para excluir una aplicación iones de depuración automática vaya a la clave del Registro siguiente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
agregar un valor REG_DWORD a la subclave AutoExclusionList, donde el nombre es el nombre del archivo ejecutable y el valor es 1.
Por defecto, el escritorio Window Manager (Dwm.exe) se excluye de la depuración automática porque, de lo contrario, puede producirse un punto muerto del sistema si Dwm.exe deja de responder (el usuario no puede ver la interfaz mostrada por el depurador porque Dwm.exe no responde y Dwm.exe no puede terminar porque está en manos del depurador).
Windows Server 2003 y Windows XP: La subclave AutoExclusionList no está disponible; por lo tanto, no puede excluir ninguna aplicación, incluida Dwm.exe, de la depuración automática.

Las entradas del registro AeDebug por defecto se puede representar de la siguiente manera:
HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows NT CurrentVersion AeDebug Auto = 1 AutoExclusionList DWM.exe = 1

+0

+1, requerir un cambio de clave de registro en cada máquina que ejecuta el programa sería frustrante. Mucho mejor con una llamada API –

Cuestiones relacionadas