2012-12-22 150 views
1

我有一個使用了很多第三方組件,不只是視覺也是一個老VB6應用程序進行音頻處理,TCP/UDP,網絡電話等..如何調試GPF崩潰?

當我運行的應用程序作爲一個EXE(如不在VB6 IDE中),它有時會與GPF一起崩潰。它發生在程序運行了好幾天之後,發生在周圍沒有人的時候。

不幸的是,用戶已經刮到了截圖,但它通常沒有任何有用的信息呢。墜毀事件的描述報告說,墜機事件發生在ntdll.dll

enter image description here

我的問題:

  1. 我需要什麼工具來調試呢?
  2. 實際上,我怎麼開始?
  3. 我在VB6編譯的PDB文件。該應用程序編譯爲Optimize for Fast Code。在這種情況下我能和他們做什麼?
+0

使用日誌記錄,以找出哪些部分代碼導致崩潰? – MarkJ

+0

@MarkJ錯誤在我的代碼中沒有被捕獲到。它必須發生在運行時或第三方控件中。 – AngryHacker

回答

2

我會用NTSD或WinDbg中(link),並且可以選擇按照用戶模式調試器運行應用程序(如果你不熟悉,它們具有相同的命令 - NTSD是一個控制檯調試器,而WinDBG的是一個GUI調試器)。兩者都有很多命令行選項,但ntsd appname.exe足以啓動。使用.sympath命令將調試器指向符號,並且您應該在路上。發生崩潰時,您可以檢查變量和堆棧以找出可能丟失的內容。

BTW - 上述錯誤是無效的處理錯誤,所以程序很可能獲得通過一個陳舊或NULL句柄窗口功能。調試器會告訴你更多。