2009-12-17 50 views
1

我們有一個.Net應用程序,由混合託管代碼和非託管代碼組成。我們有許多用戶在使用我們的應用程序時遇到BSOD的報告。這些藍屏出現在不同版本的Windows上。大多數情況下,XP只有一個用戶聲稱它發生在Windows 7上。一些用戶在做一件事情時看到它發生,另一些用戶在做完全不同的事情時看到它發生。當然,我們不能重現問題。如何追蹤由(用戶模式)應用程序觸發的死亡藍屏

不用說,我很難過。用戶模式應用程序不應該能夠藍屏OS,所以我們遇到了一個普通的內核空間應用程序中的錯誤,可能是錯誤的防病毒軟件?

有沒有人有關於如何跟蹤這樣的事情的任何提示?我們無法訪問發生這種情況的計算機,因此我們無法連接內核調試器或類似的東西。

+0

第一個建議是問你的用戶有什麼樣的硬件,他們安裝了什麼軟件 - 看你是否能找到任何常見的模式。 – 2009-12-17 23:14:50

+0

具有管理員權限的用戶模式應用程序可以輕鬆地在Vista/7中對操作系統進行藍屏。只需要殺死csrss.exe;) – 2009-12-17 23:17:47

+1

我得到了一個用戶的小型轉儲文件,發現問題出在windrvnt.sys中,這顯然是由一個老版本的FolderLock(第三方應用程序)使用的。告訴他卸載FolderLock並修復了藍屏。我假設其他用戶將是類似的。 – mhenry1384 2009-12-21 22:33:58

回答

1

關於你能做的唯一的事情就是說服用戶向您發送數據:

  • 崩潰轉儲。在您的網站上發佈walkthru,展示如何啓用完整/小型轉儲以及在哪裏找到它們。這裏有一個KB article with the gory details - 可能想簡化這個截圖&等。
  • 安裝的軟件。最好找到一個爲他們收集這些信息的工具;人類不是特別可靠或徹底。 WinAudit looks good
  • 安裝的硬件&驅動程序。 (同上)
+0

我知道如何在應用程序崩潰時生成一個小型轉儲程序,但是如何在操作系統崩潰時生成一個小型轉儲程序?我的意思是,操作系統已經崩潰了,所以沒有什麼可以寫出轉儲。 – mhenry1384 2009-12-18 14:07:37

+0

假設它確實是一個操作系統崩潰(內核恐慌),而不是有人在電源線上跳閘,你可以讓內核自己做一些原始的錯誤處理。據我所知,它從一開始就在新西蘭。我已通過其他鏈接更新了我的答案。 – 2009-12-18 15:16:22

+0

我很尷尬,我不知道操作系統在bluescreens(默認情況下)時創建了小轉儲。我只是嘗試使用http://www.osronline.com/article.cfm?article=153複製,它確實。 – mhenry1384 2009-12-21 16:48:13

0

你可以得到一個崩潰/迷你轉儲的副本?

如果是這樣,您可以使用WinDbgSOS來確定代碼在炸燬時的位置。

Tess Fernandez在使用低級工具進行託管調試方面有很好的博客。

相關問題