我有一個很奇怪的問題,已經花了幾個小時,我的注意力時:SIGABRT試圖拋出一個異常
隨着給人一種錯誤輸入到軟件我的工作,我可以產生一個異常(這當然是有意的)。這工作正常,我看到一個正確的錯誤消息執行該程序時。 但是,當我通過完全相同的輸入API(產生幾乎相同的控制流)時,程序崩潰。調試我看到下面的(我用於調試GDB):
- Exception類(在這種情況下,所謂的UserExcption這個類沒有虛方法以及它的前輩沒有任何虛方法)成功獲取實例化。
- 當我一步「到throw語句」(要說的是,我只是繼續加強異常對象實例化後)我得到以下的輸出:
(GDB)■
純虛擬方法稱爲
編程接收信號SIGABRT,中止。
在__pthread_kill 0x00007fff95c64ce2()
(GDB)
我真的不明白這裏發生了什麼。從現在開始虛擬方法(就我所知)而言,我也無法想象,有一些懸掛指針或類似的東西(否則我希望得到一個空指針異常)。由於整個程序相當大,我不知道在哪裏尋找問題,我也無法複製它。
有沒有人有一個想法這種行爲的來源可能是什麼?
最佳馬庫斯
後堆棧跟蹤('bt') –
https://docs.google.com/document/pub?id=1jgXhSmlUcGWf-ZsfM18LDOScBEc4IWIUKrozY2BS1xM - 兩個堆棧(throw語句之前幷包括後) –
你有虛擬呼叫在'zorba :: UDFunctionCallIteratorState ::〜UDFunctionCallIteratorState'? –