Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: spiritdead en 24 Diciembre 2012, 11:51 am



Título: [MEGA APORTE][source] Como detectar errores de hilo padre en prearranque
Publicado por: spiritdead en 24 Diciembre 2012, 11:51 am
buenas tardes a todos
en el dia de hoy, os enseñare como detectar esos dichosos bugs de arranque q ni el mismo visual studio te los ubica :P dando por error

--> Error desconocido, cerrando la aplicacion <--

suelen suceder al migrar la aplicacion a otras pcs y a veces se les olvidan librerias, o alguna incompatibilidad no administrada por el desarrollador

a la hora de atacar dichos problemas siempre debemos tener a mano un Sub modulo de arranque, que monitoree el arranque principal

porque ? porque el submodulo tendria 1 metodo de captado de error, q al ejecutar el verdadero hilo (hilo-padre) y falle directamente el submodulo lo detecte e informe para su rapido fix

suelen denominarse Versiones Debug o para detectar errores

os dejo esta pequeña muestra de codigo

Código
  1. 'usada para testear errores de thread en caso de emergencia usar
  2. 'cuando se use este submain para analisis de bugs de arranque debemos apagar en las propiedades la opcion (habilitar el marco de trabajo de la aplicacion)
  3. 'al terminar de reparar el bug debemos volver habilitarle!
  4. Public Class submain
  5.    <STAThread()> _
  6.    Friend Shared Sub Main()
  7.  
  8.        Application.EnableVisualStyles()
  9.        Application.SetCompatibleTextRenderingDefault(False)
  10.  
  11.        AddHandler Application.ThreadException, AddressOf Application_ThreadException
  12.        'Added this
  13.        AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionEventRaised
  14.        Application.Run(New Form1())
  15.  
  16.    End Sub
  17.  
  18.    Private Shared Sub Application_ThreadException(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
  19.  
  20.        MessageBox.Show(e.Exception.Message)
  21.  
  22.    End Sub
  23.    'Added this
  24.    Private Shared Sub UnhandledExceptionEventRaised(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
  25.        If e.IsTerminating Then
  26.            Dim o As Object = e.ExceptionObject
  27.            MessageBox.Show(o.ToString) ' use EventLog instead
  28.        End If
  29.    End Sub
  30.  
  31. End Class
  32.  

esta clase, para que puedan ejecutarle como metodo principal de arranque, en las propiedades de vuestro proyecto deben desactivar la opcion  habilitar el marco de trabajo de la aplicacion

con ese tremendo submain, pueden detectar el 100% de los errores ocultos en el arranque, ideal para esas pcs q no les quiere correr vuestro soft y necesitan a fuerza bruta hacer salir el error y lograr repararle :)

disfrutenlo ;)

yo siempre guardo este submain en mis proyectos, y tengo mis versiones debugger para las pcs problematicas ;)

saludos


Título: Re: [MEGA APORTE][source] Como detectar errores de hilo padre en prearranque
Publicado por: kub0x en 26 Diciembre 2012, 20:51 pm
Gracias por colgarlo, jugare con ello un poquillo a ver como luce.

Saludos!


Título: Re: [MEGA APORTE][source] Como detectar errores de hilo padre en prearranque
Publicado por: seba123neo en 26 Diciembre 2012, 21:15 pm
es lo mismo si pones un try catch en el sub_main, tiene el mismo efecto, si surge un error en la aplicacion salta al sub_main, yo lo tengo asi en una aplicacion.

saludos.


Título: Re: [MEGA APORTE][source] Como detectar errores de hilo padre en prearranque
Publicado por: spiritdead en 26 Diciembre 2012, 21:42 pm
es lo mismo si pones un try catch en el sub_main, tiene el mismo efecto, si surge un error en la aplicacion salta al sub_main, yo lo tengo asi en una aplicacion.

saludos.

a veces usando 1 solo try no obtienes los errores bien detallados, esta es otra forma asignandole eventos asi puedes capturar multiples tipos de errores y obtener respuestas mas exactas

xD muchas formas de verle


Título: Re: [MEGA APORTE][source] Como detectar errores de hilo padre en prearranque
Publicado por: Novlucker en 26 Diciembre 2012, 22:16 pm
Discrepo, con un try/catch si se obtienen los errores detallados, lo que ocurre es que muchas veces en el manejo de errores se pierde el InnerException por ejemplo

Código
  1. try
  2. {
  3.  
  4. }
  5. catch(Exception ex)
  6. {
  7.    throw ex;
  8. }
!=
Código
  1. try
  2. {
  3.  
  4. }
  5. catch
  6. {
  7.    throw;
  8. }

Esos fragmentos de código no siempre son iguales :P

Saludos


Título: Re: [MEGA APORTE][source] Como detectar errores de hilo padre en prearranque
Publicado por: spiritdead en 26 Diciembre 2012, 22:42 pm
Discrepo, con un try/catch si se obtienen los errores detallados, lo que ocurre es que muchas veces en el manejo de errores se pierde el InnerException por ejemplo

Código
  1. try
  2. {
  3.  
  4. }
  5. catch(Exception ex)
  6. {
  7.    throw ex;
  8. }
!=
Código
  1. try
  2. {
  3.  
  4. }
  5. catch
  6. {
  7.    throw;
  8. }

Esos fragmentos de código no siempre son iguales :P

Saludos

xD hay muchas formas de ponerlo :P yo decanto mas por eventos controlados :P en estas cosas  y en cosas pequeñas el try-catch