.net - 如何在流程创建时附加调试器?

标签 .net visual-studio-2008 debugging

我想调试一个.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。

关于.net - 如何在流程创建时附加调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482306/

相关文章:

c# - 为什么结构不能包含可为空的循环引用?

javascript - JavaScript 文件的显示在 Visual Studio 2008 中完全消失

c# - vs2010 c#调试高亮颜色

c++ - 帮忙调试这个问题

c# - 从 .NET 3.5 更改为 4.5.1 时无法加载文件或程序集 'Interop.Microsoft.Office.Core, Version=2.4.0.0, ...'

c# - 生成某些数据的防篡改签名?

c# - 如何用静态方法模拟?

.net - 从 Visual Studio 部署 .NET 应用程序以供公众使用的正确且完整的步骤是什么?

visual-studio-2008 - Visual Studio 2010 : It is worth for C++ programming?

Linux:最强大的调试器