Me gustaría depurar una aplicación .NET que falla inmediatamente al inicio (y existe sin un mensaje de error o registro), pero no puedo adjuntar un depurador porque el proceso existe casi inmediatamente después de que lo ejecute. No tengo el código fuente de la aplicación, así que no puedo hacer "Iniciar la depuración". He intentado utilizar un estudio macro de Visual para iniciar un proceso, se adhieren a ella, a continuación, romper, pero la macro es demasiado lento y por el tiempo que se encuentre el proceso, el proceso ya ha salido:Cómo adjuntar un depurador en la creación del proceso?
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
¿Existe una forma de conectar el depurador a un proceso recién creado, como lo hace F5?
Gracias!
Buen truco! Solo en mi caso, presionar F5 habría ejecutado el programa y luego saldría inmediatamente. En cambio, usar Step Into provocó que el depurador se rompa al principio de Main(). ¡Gracias! –