2010-09-18 32 views
0

我已經用C編寫了一個應用程序,該應用程序作爲Windows服務運行。大多數用戶可以運行應用程序沒有任何問題,但由於訪問衝突造成的重大少數人體驗崩潰,所以我知道我有一個地方的錯誤。我試圖設置虛擬機來儘可能地反映用戶的配置,但不能重現問題。用於在Windows上診斷C應用程序崩潰的工具/技術

我的背景是在Java中 - 當一個Java應用程序崩潰時,它會產生一個堆棧跟蹤,確切地顯示出現問題的位置,但本機應用程序沒有那麼有用。 C開發人員通常使用哪些技術來追蹤這類問題?我沒有物理訪問遇到崩潰的用戶機器,但是我可以發送更多工具來安裝以捕獲信息。我也有Windows錯誤報告顯示異常代碼/偏移等,但這些對我來說沒有多大意義。我使用gcc編譯了我的應用程序 - 是否有一些編譯器選項可用於在發生崩潰時生成更多信息?

回答

1

當程序崩潰時,您可以嘗試讓用戶運行ProcDump來捕獲核心轉儲。與使用類似Visual Studio的東西不同,它是一個簡單的單一命令行實用程序,因此讓用戶運行它應該沒有問題。

1

在大多數現代操作系統上,您的應用程序可以安裝一個崩潰處理程序,在崩潰事件中將棧移走。我沒有經驗在Windows上這樣做,但this article經歷瞭如何做到這一點。

+0

如果程序正在破壞堆棧(訪問違規指向這是一種可能性),那麼堆棧跟蹤可能不會給你很多信息。另外,這篇文章是適用於C還是僅適用於C++? C不像C++那樣支持異常... – 2010-09-18 09:59:12