一般来说,您对此有何建议?目前,我需要将近 10 分钟才能附加到托管 SharePoint 2007 的本地运行的 IIS 进程。
问问题
3296 次
3 回答
6
确保您的符号路径包含本地缓存目录,这样它就不会在您每次附加时从 Microsoft 的公共符号服务器下载符号。
此外,我还没有在 Visual Studio 中尝试过,但您也可以设置一个排除列表来识别您没有符号的模块。
于 2009-10-16T17:53:29.920 回答
4
在 Visual Studio 2010 中,我通过转到工具 -> 选项 -> 调试 -> 符号,选择仅指定的模块并单击确定,将我对 w3wp 进程的附加时间减少到几乎即时。这使得 Visual Studio 为我们团队编写的六个程序集加载符号,并在此过程中跳过为其他 146 个模块加载符号。
请注意,我让 Microsoft 符号服务器检查了我的符号文件 (.pdb) 位置,并将我的符号缓存到 c:\debugSymbols。
于 2011-11-11T16:03:41.457 回答
1
您还可以从windows 调试工具页面下载当前平台的符号。将它们安装到本地缓存符号目录(例如 c:\windows\symbols)
您还可以按照此处所述关闭符号的自动加载。
或者更快的方法,尝试在调试器外部运行(使用 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
于 2009-10-20T21:26:02.343 回答