【问题标题】:In VS2008, is there a way to automatically "Attach to Process"?在VS2008中,有没有办法自动“附加到进程”?
【发布时间】:2010-12-24 08:37:00
【问题描述】:

我正在开发一个包含三个项目的解决方案,所有这些项目都在我开始调试时运行。这很烦人,因为如果我想调试不是我的启动项目的特定项目的某个方面,我必须每次都附加该过程。

有没有办法让调试器自动附加到所有项目?

感谢您的帮助:)

干杯

伊恩

【问题讨论】:

    标签: c# visual-studio visual-studio-2008 debugging


    【解决方案1】:

    您为什么不简单地将所有 3 个项目都设置为您的启动项目?这样就不需要附加了?

    只需转到您解决方案的属性并选择“多个启动项目”。

    【讨论】:

    • 嘿,你看看那个。谢谢Jaco,我不知道你能做到这一点。干得好:)
    • 我也不知道!酷,现在要弄清楚我需要它的地方;p
    【解决方案2】:

    不像 Jaco 的回答那么优雅(从未意识到您可以有多个启动项目),但可能非常有用。我有一个 VS 宏:

        Function AttachToProcess(ByVal procname As String, ByVal quiet As Boolean) As Boolean
        Dim attached As Boolean = False
        Dim proc2 As EnvDTE80.Process2
    
        ' Attaching natively, from http://blogs.msdn.com/jimgries/archive/2005/11/30/498264.aspx '
        Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
        Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
        Dim dbgeng(1) As EnvDTE80.Engine
        dbgeng(0) = trans.Engines.Item("Native")
    
        For Each proc2 In DTE.Debugger.LocalProcesses
            If (proc2.Name.Contains(procname)) Then
                proc2.Attach2(dbgeng)
                attached = True
                Exit For
            End If
        Next
    
        If (attached = False And quiet = False) Then
            MsgBox(procname + " is not running")
        End If
        Return attached
    End Function
    
    Sub AttachToMyProcess1()
        AttachToProcess("MyProcess1.exe", True)
    End Sub
    Sub AttachToMyProcess2()
        AttachToProcess("MyProcess2.exe", True)
    End Sub
    

    然后我将AttachToMyProcessX() 宏附加到键盘快捷键。这样做的好处是您可以追溯附加到一个进程:按 Ctrl-F5 然后附加通常比从 F5 开始要快。

    【讨论】:

    • 这正是我想要的。在调试与 Visual Studio 不兼容的应用程序使用的 DLL 时,我通常必须附加到进程。
    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    相关资源
    最近更新 更多