2012-06-24 44 views
3

我想跟蹤一個非常大的ASP.NET應用程序中可能的內存泄漏。我試圖在嘗試在實時環境中使用此工具之前先熟悉WinDBG。WinDBG - 不包括符號路徑

我按照下面的文章中的說明,我發現非常有用:http://humblecoder.co.uk/uncategorized/spotting-a-memory-leak-with-windbg-in-net。我能夠創建ASP.NET進程的「內存轉儲」文件,並顯示該文檔中指定的代理正在導致內存泄漏。我在文章中提到的段落開始:「接下來我們需要符號」。我沒有使用File \ Symbol File Path添加符號文件;在WinDBG中,但我似乎仍然能夠調試應用程序,並遵循本文的其餘步驟。 ASP.NET應用程序不需要符號路徑嗎?

回答

2

由於.NET組件包含元數據,包括每一個方法和它的參數的名稱,符號不是必需的,以獲得管理線程的可讀堆棧跟蹤。

一件事符號可以提供的是文件名和每個語句的行號,這樣你就可以更容易地計算出在堆棧跟蹤哪些幀對應於源代碼行。

1

正如邁克爾說,符號不是絕對必要的託管代碼,因爲大多數的相關信息,在運行時元數據,但如果你挖掘到本地代碼有符號它是非常有用的。

對於很多情況下你可以做.symfix它會告訴WinDbg中使用微軟的公共符號服務器。這將使您可以訪問代碼中所有CLR和Win32特定調用的符號。如果設置了路徑,請記住做一個.reload

如果你的代碼包括本地非微軟組件,以及,你需要相應的PDB文件的位置追加到符號路徑。使用.sympath命令。

要對符號加載進行故障排除,請使用!sym noisy命令。

欲瞭解更多信息see this