2012-07-03 24 views
2

我使用sos擴展在ntsd.exe下追蹤.NET 4.0應用程序。當我啓動「!DumpHeap」命令(恰好在「.loadby sos clr」之後)時,我注意到很長的延遲。我使用其他工具追蹤了ntsd.exe,發現它從「65.55.10.11」IP地址下載了總共3.9MB的文件。什麼是「ntsd」的!DumpHeap命令從網上下載?

你知道這些文件是什麼嗎?

PS:這似乎並沒有再次發生......

回答

3

我沒有太大的.NET程序員,但我知道,從C++這種行爲:WinDbg的是從微軟的符號服務器下載符號(在你提到的IP確實屬於MS)。這解釋了延遲,因爲下載需要時間,並解釋了爲什麼它不會再發生 - 有一個本地緩存,重用以前下載的符號。

在C++中,符號以.pdb文件的形式出現。 IIRC,他們也在.NET中使用(雖然不確定)。他們讓你更好地瞭解調試過程的內容 - 方法名稱等。

+0

我懷疑這一點,但由於託管代碼(儘管它是本地對應方)是自描述的(由於IL本質),所以似乎並非如此。 –

+0

雖然它可能是Windows或任何Microsoft組件的符號。檢查'_NT_SYMBOL_PATH','_NT_ALT_SYMBOL_PATH'環境變量。 –

+0

我剛剛ping過msdl.microsoft.com/download/symbols,這是微軟的符號服務器。它的IP確實是65.55.10.11,所以它幾乎肯定會出於這個原因。符號文件包含有關源文件和行的信息,這些信息不在IL中。 – eran