我想調試一個在啓動時立即失敗的.NET應用程序(並且沒有錯誤消息或日誌),但我無法附加調試器,因爲在運行它之後,該進程幾乎立即就存在。我沒有應用程序的源代碼,所以我不能做「開始調試」。我試圖用一個Visual Studio宏來啓動一個進程,重視它,然後打破,但宏觀太慢,並通過它發現過程時,進程已經退出:如何在創建流程時附加調試器?
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
是否有如何將調試器附加到新創建的進程,如F5呢?
謝謝!
巧妙的把戲!就我而言,擊中F5會運行程序,然後立即退出。相反,使用Step Into會導致調試器在Main()的開始處出現中斷。謝謝! – 2009-09-27 02:52:43