2010-01-20 44 views
6

我正在研究爲託管進程創建轉儲文件。使用windbg(或mscordmp)創建託管(.net)應用程序的轉儲文件

我知道我可以使用windbg創建一個轉儲文件,但我想知道它們是否有特殊的標誌,我應該傳遞給「.dump」命令,因爲它是託管應用程序而不是本地一。

相關方面的問題:我聽說過一個名爲mscordmp.exe的工具(如果你是谷歌的話,你可以在網上找到它)。 mscordmp仍然相關?我找不到任何地方的下載點,但我認爲它可能比windbg更適合傾銷託管內存。

+0

可能的重複[如何爲.NET做一個好的故障轉儲?](http://stackoverflow.com/questions/24874027/how-do-i-take-a-good-crash-dump-for -淨) – 2015-09-29 06:17:49

回答

4

您應該使用/ ma創建完整的內存轉儲。否則sos會抱怨管理分析將非常有限。

0

不,沒有任何與託管應用程序相關的特殊標誌,windbg只是創建內存轉儲,它是原始數據。分析工具的目的是瞭解您的轉儲是爲託管應用程序創建的還是非託管應用程序創建的。

如果談論分析託管應用程序,你可以有以下步驟:

  1. 重視windbg處理運行管理的應用程序
  2. 運行.dump /ma <outputfilename.dmp>。它會創建轉儲文件,根據進程佔用的內存,此操作可能需要幾分鐘的時間。 /ma標誌命令創建完全內存轉儲的所有選項啓用附加進程(它不是完整的系統轉儲,只有附加的進程)。
  3. 脫離進程,它可以繼續運行,而您可以加載轉儲文件到windbg並分析它。
  4. sos.dll是用於分析託管應用程序的常見windbg擴展。

p.s.可能會出現問題啓用sos.dll與.load sos.dll,在這種情況下,您可以嘗試.loadby sos mscorwks

相關問題