【发布时间】:2010-12-07 11:00:13
【问题描述】:
一般来说,您对此有何建议?目前,我需要将近 10 分钟才能附加到本地运行的托管 SharePoint 2007 的 IIS 进程。
【问题讨论】:
标签: visual-studio visual-studio-debugging debug-symbols pdb
一般来说,您对此有何建议?目前,我需要将近 10 分钟才能附加到本地运行的托管 SharePoint 2007 的 IIS 进程。
【问题讨论】:
标签: visual-studio visual-studio-debugging debug-symbols pdb
确保您的符号路径包含本地缓存目录,这样它就不会在您每次附加时从 Microsoft 的公共符号服务器下载符号。
此外,我还没有在 Visual Studio 中尝试过此操作,但您也可以设置 exclusion list 标识您没有符号的模块。
【讨论】:
您还可以从debugging tools for windows page 下载适用于您当前平台的符号。将它们安装到本地缓存符号目录(例如 c:\windows\symbols)
您还可以按照here 的说明关闭符号的自动加载。
或者更快的方法,尝试在调试器外部运行(使用 Ctrl-F5),然后附加到进程。我有一个 Visual Studio 宏,我绑定到 Ctrl-Shift-A,我可以随时将其附加到我的进程,它映射到这个:
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
【讨论】:
在 Visual Studio 2010 中,我通过转到工具 -> 选项 -> 调试 -> 符号,选择仅指定模块并单击确定,将我对 w3wp 进程的附加时间减少到几乎即时。这使得 Visual Studio 会为我们团队编写的六个程序集加载符号,并在此过程中跳过为其他 146 个模块加载符号。
注意,我让 Microsoft 符号服务器检查了我的符号文件 (.pdb) 位置,并将我的符号缓存到 c:\debugSymbols。
【讨论】: