我已經覆蓋線程程序(控制檯應用程序)用C#編寫如何知道在特定情況下
運行良好長達6-10小時後失敗並停止,控制檯做調試/ profile文件上吊C#應用程序不關閉並顯示上次成功的日誌
錯誤日誌(所有可能的)它寫入文件。
如果發生甚至IO異常它在Windows事件並將其寫入
有記憶衛隊和線程逆天太那個限制程序給定的限制。
當它停止(6-10小時後)沒有任何反應沒有錯誤日誌,心跳,數據庫調用,內存使用情況,我可以看到線程產生了70%左右的最大限制。
我知道這可能是內存泄漏,因爲線程可能不會因數據庫調用延遲而變得免費。
我只是想在這個停止的應用程序上工作,以知道確切的問題,如內存泄漏或哪個調用阻塞。
是否有任何工具可用於此掛起/停止的應用程序?什麼應該是正確的方式來進行。
我使用ANTS內存pro-filer,性能pro-filers,但所有這些工具在運行應用程序工作。
我最能得到的是內存轉儲。
建議歡迎。
編輯: 最初我不想重新運行它等待幾個小時來調試,如果沒有辦法,這將是最後的選擇。
我試圖附加調試器,並把斷點,它說:「斷點不會打到現在......」
可以運行在Visual Studio中,並在調試模式下的應用程序? – Karlth
也許,您可以處理內存轉儲以找出在應用程序運行時執行的線程。在多個線程應用程序中,存在影響整個系統的小代碼塊。 –
它是一個WPF應用程序或一個贏的窗體應用程序?如果它的WPF,請注意與線程一起使用的事件,並嘗試使用弱事件而不是創建強引用的正常事件,並且在大多數情況下不會自動釋放。如果它是一個winform應用程序,最好的辦法是仔細查看創建線程的代碼,並可能使用後臺工作線程來提高使用效率。在我看來,在你的應用程序掛起之前你必須找到錯誤,因爲在應用程序停止響應之後,這些工具也無法報告太多。 – learner