2013-07-19 17 views
0

大家好,我試着在網上找到一個解決方案,但是我失敗了,我需要你的幫助。C++如何在程序崩潰之前將某些內容寫入日誌文件

我需要編寫它具有以下屬性PROGRAMM:

如果崩潰 - 它應該寫的崩潰而行,那裏發生的時間。

爲此我做了一個特殊的日誌記錄功能,但是 - 我不知道如何攔截崩潰事件,並使其寫入日誌文件 - 發生崩潰之後。

我真的很感謝你的幫助。

+0

在什麼平臺上? –

+0

[如何生成一個堆棧跟蹤當我的gcc-c-app-crashes](http://stackoverflow.com/questions/77005/how-to-generate-a-stacktrace-when- my-gcc-c-app-crashes)有幫助嗎? –

回答

1

您可以在析構函數中使用std::uncaught_exception來檢查堆棧是否由於異常而展開,並且如果是這種情況,請編寫一個有作用域的日誌條目。您可能也有興趣的this thread。當涉及到異常處理時,它包含了許多關於好的和不好的練習的有用信息。

+0

使用** cppreference **代替cplusplus – Manu343726

+0

謝謝您的回覆:) –

0

取決於你想如何實現它。

讓我來解釋一下你試圖趕上崩潰的原因。

這些被稱爲未處理的異常。這些讀取通過C++異常處理程序並被認爲是OS級異常處理。這意味着您在哪裏以及如何捕捉錯誤的實現取決於操作系統。 (非常重要)

我只知道窗口,所以....這裏是你可以在Windows平臺上做到這一點的方法。

三種方式。

  • __try __except - 基本上就像嘗試捕捉,但較低的水平

  • 捕捉信號 - 如果你想有漂亮在我看來無用不會甚至懶得解釋

  • google一下我的建議解決辦法是

    SetUnhandledExceptionFilter

+0

謝謝您的回覆:) –

相關問題