我打算從.NET中調用MiniDumpWriteDump來生成小型轉儲,並且工作正常。但是,當我將結果轉儲加載到VS 2010中時,我沒有看到任何有用的信息。特別是,調用堆棧窗口看起來是這樣的:在VS 2010中調試小型轉儲時遇到的問題
它不包含任何管理框架,雖然我寫轉儲而在託管代碼中的異常處理程序。此外,它不包含位於我的exe中的任何框架。
任何想法爲什麼發生這種情況?
順便說一句,當我從VS調試器手動創建轉儲時,轉儲確實包含按預期方式管理的幀。
編輯:
我發現一個Microsoft Connect issue這一點。它說:
目前CLR不支持託管進程採取自己的 轉儲。
任何人都知道這是否仍然如此?
調試使用託管代碼小型轉儲保持在VS2010一個可疑的喜悅。只是一些提示:您需要啓用Microsoft Symbol服務器,以便調試器可以藉助Windows .pdb文件正確地使用非託管堆棧。您需要將MiniDumpWriteDump()選項設置爲11,以便在小型轉儲中捕獲垃圾收集堆。如果你創造的那個和VS創造的一樣巨大,你做得對。 –
@stefan http://msdn.microsoft.com/en-us/magazine/cc188701.aspx - 「在衝破所有我能想到的東西之後,我意識到我從其他堆棧獲取信息的唯一途徑是產生一個將信息傳遞迴SUPERASSERT.NET的進程。「和「雖然這個想法是從流程內部走過所有的堆棧,但沒有可行的方法來實現這一點。」 –