我正在編寫一個單元測試應用程序,我想讓其中一種方法失敗。爲此,我將一個NULL參數傳遞給該方法。但是這導致下游的崩潰轉儲。那麼我們如何通過代碼禁用崩潰轉儲生成?如何在C++中以編程方式禁用崩潰轉儲?
我期待會有一些註冊表設置,可以通過代碼進行更改。
我正在編寫一個單元測試應用程序,我想讓其中一種方法失敗。爲此,我將一個NULL參數傳遞給該方法。但是這導致下游的崩潰轉儲。那麼我們如何通過代碼禁用崩潰轉儲生成?如何在C++中以編程方式禁用崩潰轉儲?
我期待會有一些註冊表設置,可以通過代碼進行更改。
我認爲這裏的要求是不正確的。有幾個信號不能被程序本身捕獲。 SIGSEGV(當您訪問無效內存/ NULL時引發)是其中之一。沒有操作系統會暴露一個接口,你可以在程序中控制一個SIGSEGV。這將是非常糟糕的操作系統設計。
最好重寫應該檢查值的單元測試(如Joachim建議的),不要使應用程序崩潰。碰撞測試屬於系統測試,不在單元測試範圍之內。
需要更多的信息,操作系統的一個開始。 – a3f 2015-03-31 07:42:30
然後測試工作,因爲它發現了一個錯誤。修復bug(即檢查「NULL」指針並返回失敗)而不是解決它。即使您禁用「崩潰轉儲」,崩潰仍會發生。 – 2015-03-31 07:44:42
似乎更合理的問「如何控制崩潰轉儲結束的位置,以便我可以刪除它」,或者沿着這些方向 - 如果代碼崩潰,您可能確實需要使用crashdump來確定發生了什麼。 – 2015-03-31 07:48:43