Visual Studio 缩短附加和加载符号的时间

mefy6pfw  于 2023-03-24  发布在  其他
关注(0)|答案(3)|浏览(162)

一般来说,你对此有什么建议?目前需要近10分钟,我附加到一个本地运行的IIS进程托管SharePoint 2007。

lymnna71

lymnna711#

请确保符号路径包含本地缓存目录,以便每次附加时不会从Microsoft的公共符号服务器下载符号。
另外,我还没有在Visual Studio中尝试过这种方法,但是您也可以设置一个exclusion list来识别没有符号的模块。

ubbxdtey

ubbxdtey2#

在Visual Studio 2010中,我通过进入Tools -〉Options -〉Debugging -〉Symbols,选择Only specified modules并单击OK,将连接到w3 wp进程的时间减少到几乎是即时的。这使得Visual Studio加载我们团队编写的六个程序集的符号,并跳过加载进程中其他146个模块的符号。
注意,我已经检查了Microsoft符号服务器中的符号文件(.pdb)位置,并将符号缓存到c:\debugSymbols。

83qze16e

83qze16e3#

您也可以从debugging tools for windows page下载当前平台的符号。将它们安装到本地缓存的符号目录(例如c:\windows\symbols)。
您也可以关闭符号的自动加载,如here所述。
或者,尝试在调试器之外运行(使用Ctrl-F5),然后附加到进程。我有一个Visual Studio宏,我绑定到Ctrl-Shift-A,我可以在任何时候点击它来附加到我的进程,它Map到:

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 AttachToMyProcess()
    AttachToProcess("MyProcess.exe", True)
End Sub

相关问题