.net - remote - visual studio adjuntar
¿Cómo adjuntar un depurador en la creación del proceso? (4)
Me gustaría depurar una aplicación .NET que falla inmediatamente en el inicio (y existe sin un mensaje de error o registro), pero no puedo adjuntarle un depurador porque el proceso existe casi inmediatamente después de ejecutarlo. No tengo el código fuente de la aplicación, por lo que no puedo hacer "Iniciar la depuración". Intenté usar una macro de Visual Studio para iniciar un proceso, adjuntarla, luego romperla, pero la macro es demasiado lenta y, cuando encuentra el proceso, el proceso ya ha finalizado:
Imports System
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Public Module Module1
Sub RunAndAttach()
Try
Dim dbg As Debugger3 = DTE.Debugger
Dim trans As Transport = dbg.Transports.Item("Default")
Dim sysProc As Process = System.Diagnostics.Process.Start(New ProcessStartInfo("C:/Temp/CrashingApp.exe") With {.WorkingDirectory = "C:/Temp"})
Dim proc As EnvDTE90.Process3 = dbg.GetProcesses(trans, "ALLON-PC").Item("CrashingApp.exe")
If (Not sysProc.HasExited) Then
proc.Attach()
proc.Break(False)
Else
MsgBox("Process " + proc.Name + " has already has exited.")
End If
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
End Sub
End Module
¿Hay alguna forma de adjuntar el depurador a un proceso recién creado, como hace F5?
¡Gracias!
- Crear un nuevo proyecto (un proyecto de consola está bien).
- Haga clic derecho en el proyecto y seleccione "Propiedades".
- Haga clic en la pestaña "Depurar".
- Elija "Iniciar programa externo:"
- Seleccione el programa.
- Pulsa F5.
- Puedes usar windbg desde ahí puedes iniciar el proceso.
- Puedes usar el reflector para descompilar y obtener la fuente y continuar desde allí.
Otra idea es usar el monitor de procesos para ver qué está tratando de hacer el proceso. La falla es probablemente causada por una dependencia de algo externo. Y el monitor de proceso puede ayudarte a localizarlo.
Actualización: puede usar el complemento FileDisassembler del reflector para crear la solución completa y depurarla desde allí.
Creo que puedes simplemente hacer "Archivo / Abrir / Proyecto / Solución", seleccionar el archivo .exe como la "solución" y luego presionar F5.
El depurador requiere que ocurra una cierta cantidad de procesamiento antes de poder adjuntarlo. Por ejemplo, en ASP.Net, es difícil depurar los eventos "Application_Start" en IIS, porque es demasiado temprano: la aplicación debe iniciarse antes de poder adjuntar un depurador.
Sin embargo, puede ejecutar su programa en Windbg y obtener una interrupción inmediata o un volcado de memoria. Aquí hay un excelente tutorial sobre cómo configurar Windbg , y en algunos de los comentarios en la publicación hay instrucciones sobre cómo ejecutar su .exe desde dentro de windbg y obtener un volcado inmediato.