換言之:如何將內核錯誤拋出到C++異常?任何想法如何使C++在內核錯誤上拋出異常
因爲C++能夠將大多數編程錯誤作爲例外拋出。但是,爲什麼不是零分的錯誤呢?分段錯誤?其他內核故障?
我明白這些故障是如何在內核中引發並由內核處理的。我也理解在編譯器的幫助下如何在C++中創建和處理異常。你如何看待兩者之間的點可以連接?這方面有沒有堅實的工作?
在此先感謝您的任何想法或提示。
編輯以迴應可能的重複標誌:作爲類似的問題How to catch segmentation已詢問關於segv的capture
部分,recovery
仍然丟失。此外,我正在尋找一種系統的方法來從各種內核異常中恢復,而不僅僅是segv。
再次編輯:我已經解釋了爲什麼這個問題與其他問題不同。還有5人投票結束。
這取決於你的平臺。在某些Unix上,從某些信號(包括SIGSEGV,SIGFPE和SIGILL)返回會導致未定義的行爲。 – Brian 2014-08-30 04:50:29
對,我想到了信號,但忘了在提出問題時提及它。具體來說,我還沒有想出如何將信號轉換爲C++可拋異常。如果你可以轉換sigsegv它將解決一半的問題。如果錯誤是由程序引起的,我仍然希望能夠拋出所有內核錯誤。 – minghua 2014-08-30 04:53:43
@Brian:拋出一個異常,或者使用'longjmp',並不算作從信號處理程序返回的禁止。 – 2014-08-30 04:56:42