一般的に言えば、これに関するあなたの推奨事項は何ですか? 現在、SharePoint 2007 をホストしているローカルで実行中の IIS プロセスにアタッチするには、10 分近くかかります。
3 に答える
アタッチするたびに Microsoft のパブリック シンボル サーバーからシンボルをダウンロードしないように、シンボル パスにローカル キャッシュ ディレクトリが含まれていることを確認してください。
また、Visual Studio でこれを試したことはありませんが、シンボルを持たないモジュールを識別する除外リストを設定することもできます。
Visual Studio 2010 では、[ツール] -> [オプション] -> [デバッグ] -> [シンボル] に移動し、[指定されたモジュールのみ] を選択して [OK] をクリックすることで、w3wp へのアタッチ プロセス時間をほぼ瞬時に短縮しました。これにより、Visual Studio はチームが作成した 6 つのアセンブリのシンボルをロードし、プロセス内の他の 146 モジュールのシンボルのロードをスキップします。
Microsoft Symbol Server でシンボル ファイル (.pdb) の場所を確認し、シンボルを c:\debugSymbols にキャッシュしていることに注意してください。
現在のプラットフォームのシンボルは、Windows 用デバッグ ツールのページからダウンロードすることもできます。それらをローカルのキャッシュされたシンボル ディレクトリ (例: c:\windows\symbols) にインストールします。
こちら で説明されているように、シンボルの自動読み込みをオフにすることもできます。
または、デバッガーの外部で (Ctrl-F5 を使用して) 実行してから、プロセスに接続してみてください。任意の時点でプロセスにアタッチするためにヒットする Ctrl-Shift-A にバインドする Visual Studio マクロがあり、これにマップされています。
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