首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在进程创建时附加调试器?

如何在进程创建时附加调试器?
EN

Stack Overflow用户
提问于 2009-09-26 22:10:28
回答 2查看 3.5K关注 0票数 17

我想调试一个在启动时立即失败的.NET应用程序(并且存在时没有错误消息或日志),但我不能将调试器附加到它,因为该进程几乎在我运行它之后就立即存在。我没有应用程序的源代码,所以我不能做“开始调试”。我尝试使用Visual Studio宏来启动一个进程,附加到它,然后中断,但宏太慢了,当它找到该进程时,该进程已经退出:

代码语言:javascript
复制
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那样将调试器附加到新创建的进程?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2009-09-26 22:24:15

调试器在附加之前需要进行一定数量的处理。例如,在ASP.Net中,很难在IIS上调试"Application_Start“事件,因为它太早了-应用程序必须在附加调试器之前启动。

但是,您可以在Windbg中执行您的程序,并立即获得中断或内存转储。有一个great tutorial on setting up windbg here,在这篇文章的一些评论中,有关于如何在windbg中运行.exe并立即获得转储的说明。

票数 3
EN

Stack Overflow用户

发布于 2009-09-26 22:52:01

我认为你可以只做“文件\打开\项目/解决方案”,选择.exe作为“解决方案”,然后点击F5。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1482306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档