c# - samsung - Cómo depurar una aplicación que desaparece
como eliminar aplicaciones de android que no se pueden eliminar (5)
Intenta usar las herramientas de depuración de microsoft. Puedes descargarlos desde aquí .
Use adplus para capturar el choque y luego windbg para analizarlo.
adplus -crash -pn your.exe -quiet
Mucha información excelente sobre la depuración en Windows en este blog .
En un servidor de Windows 2003 tengo una aplicación .NET 3.5 C#
pura (sin código no administrado). Se conecta a varios otros sistemas remotos a través de sockets y actúa como un concentrador de datos. Funciona de 10 a 15 horas bien, sin problemas, pero de vez en cuando simplemente desaparece. Si miro la aplicación usando el administrador de tareas, el uso de la memoria permanece constante.
En la función Main()
envuelvo la invocación del resto de la aplicación en un bloque try .. catch
que acaba de soplar por completo: el bloque catch que registra la excepción en un archivo se ignora. Si presento manualmente una excepción para probar, se invoca el bloque catch.
Antes de ingresar al try .. catch
que hago:
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
El sistema tiene al Dr. Watson en él, pero nada se escribe en el directorio DRWTSN32.EXE
que apunta DRWTSN32.EXE
.
¿Cómo puedo detectar la excepción que está causando esto?
Si se trata de una aplicación de Windows Forms, puede probar Application.ThreadException
.
También podría conectar WinDBG al inicio y habilitar puntos de interrupción en excepciones .NET. Luego puede hacer una !printexception
para ver qué está pasando.
Puede haber un rastro de la aplicación en EventLog.
He tenido una aplicación .Net desaparecer sin la posibilidad de atrapar una excepción. Hubo una entrada en EventLog cada vez que esto sucedió.
Para ver el registro de eventos, simplemente escriba EventVwr en el símbolo del sistema o ejecute el cuadro.
Si se trata de una aplicación de Windows Forms, entonces es probable que la excepción no controlada sea capturada por la ventana de la bomba de mensajes, por lo que nunca la verá. Para tratar con esto, vea mi respuesta aquí .
Si se trata de un servicio de Windows, es posible que la excepción aparezca en un hilo de fondo y no se vuelva a agrupar en el hilo principal. Para tratar con esto, necesita ordenar cualquier hilo de fondo a su hilo principal, y la excepción se volverá a lanzar allí para que pueda atraparlo.
Si es una aplicación de consola, entonces estoy un poco desconcertado.
EDITAR : Tu comentario dice que esta es una aplicación de Windows Forms. En ese caso, probablemente no vea la excepción porque está siendo manejado por el controlador de excepciones de Windows Forms integrado que hace lo siguiente de forma predeterminada:
- Captura una excepción administrada no controlada cuando:
- sin depurador adjunto, y
- la excepción ocurre durante el procesamiento del mensaje de ventana, y
- jitDebugging = false en App.Config.
- Muestra el diálogo al usuario y evita la finalización de la aplicación.
Puede deshabilitar este comportamiento configurando jitDebugging = true en App.Config. Entonces debería poder ver la excepción no controlada registrándose para el evento Application.ThreadException, por ejemplo, en C #:
Application.ThreadException += new Threading.ThreadExceptionHandler(CatchExceptions);