2010-08-24 43 views
2

我有一個使用互操作服務調用本機Win32 DLL的.NET應用程序。當我運行這個程序時,它會在DLL內的某個地方崩潰。但是,我一直無法獲得任何堆棧轉儲信息。爲使用本機互操作的.NET應用程序獲取崩潰轉儲

當我在Visual Studio調試器中運行時,調試器在發生崩潰時退出。我得到了「Blah-blah-app已停止工作,Windows正在檢查問題的解決方案......」。如果我單擊出現的調試按鈕,我會收到一條錯誤消息,指出該進程已經在調試器中打開,但從中啓動應用程序的調試器不起作用。

我試圖啓用本地故障轉儲,按照這裏的說明:Collecting User-Mode Dumps。但是,不會生成故障轉儲,並且我注意到該頁面顯示「執行其自定義崩潰報告的應用程序(包括.NET應用程序)不受此功能的支持。」

回答

2

聽起來好像您正在使用託管調試,這是託管項目的默認設置。如果您在原生DLL中發生崩潰,則需要啓用混合模式調試才能獲取要查找的事件和堆棧。

  • 右鍵單擊該項目,並選擇屬性
  • 轉到調試選項卡
  • 選中「啓用非託管調試」複選框

重複您的方案。

0

當你拿到「誇誇其談,應用程序已停止工作...」的消息,該過程仍然存在。您可以在任務管理器中找到它,右鍵單擊它並選擇創建轉儲文件