2010-05-13 39 views
2

我試圖自動化爲託管應用程序打開崩潰轉儲和檢索堆棧跟蹤的過程。 Windgb有時會起作用,但是要獲取它來加載正確版本的sos.dll是一場噩夢,除非機器處理轉儲與轉儲發生的機器幾乎相同。另一方面,Visual Studio只是簡單地完成這項工作。我打開轉儲,轉到立即窗口,然後鍵入立即自動化VisualStudio窗口

.load \\<machine where dump occured>\c\windows\microsoft.net\framework\v2.0.50727\sos.dll 

!clrtsack 

而且eveything工作得很好。

我可以在visual studio中編寫這個過程嗎?如果沒有,visual studio使用的後端調試器是否與windbg相同?

回答

1

而不是將完整路徑傳遞給.load命令,您可以改爲使用.loadby命令爲WinDbg提供有關DLL位置的提示。
命令接收兩個參數:

  1. 要加載的DLL的名稱(在你的情況,SOS
  2. 一個已經加載的DLL的名稱,應包含在同一文件夾作爲第一個請求的DLL(在你的情況下,對於早期版本,clr用於.Net v4.0或mscorwks)。

例如:

// v4.0 
>.loadby sos clr 

// earlier versions 
>.loadby sos mscorwks