2014-12-24 50 views
1

我用MinGW編譯的C++程序有一個完全令人困惑的問題。在程序中的某個確定性點處,一些異常處理程序被禁用,並且不再處理將來引發的任何異常。我可以追蹤確切的源代碼行,這是對堆中數組的無害分配。指針沒有損壞,我也沒有超出其範圍。更重要的是,在很多不同的情況下調用相同的代碼,即使大部分相同的參數都沒有觸發錯誤。如果我撥弄代碼以使其值始終爲零,則不會觸發該錯誤。我不知道發生了什麼。它也只能禁用一些異常處理程序。異常處理程序進一步下來的調用堆棧被禁用,而較高的異常處理程序保持活動狀態。真是莫名其妙。如何調試MinGW異常處理?

那麼,我該如何去調試呢?在MinGW的GCC版本中,我真的無法很好地理解異常情況。發生這種奇怪的一系列症狀會發生什麼?

回答

0

沒關係,事實證明,抽出一些時間和思考症狀提示了答案。

結果我使用的一個可怕的庫可能會在清理過程中拋出一個異常,所以我在堆棧展開期間發生異常。

我應該意識到,當處理程序進一步調用堆棧時表現正常。咄。