2014-09-24 106 views
1

有沒有辦法阻止'Gtk :: Main :: iteration()'捕捉異常?防止GTKMM捕捉異常

每當在處理程序中引發異常時,它會捕獲程序,然後程序以SIGTRAP結束(在Linux中)。留言:

(test.debug.bin:32233): glibmm-ERROR **: 
unhandled exception (type std::exception) in signal handler: 
what: test 
+0

這是否也發生,如果你不調試? – Peter 2014-09-24 14:36:03

+0

現在只需要調試即可。 – chila 2014-09-24 14:59:59

+0

因此,如果你沒有調試,那麼這個異常不會被捕獲? SIGTRAP可能只適用於您的調試器。從「$ man 7 signal」:「SIGTRAP 5 Core Trace/breakpoint trap」另請參閱:http://unix.stackexchange.com/questions/131044/dialog-trap-and-sigtrap – Peter 2014-09-25 07:56:44

回答

3

不,對不起。這個未處理的異常消息只是一個沒有消息的崩潰更有用的替代方法,如果gtkmm沒有這樣做,你會得到什麼。您需要在自己的代碼中處理信號處理程序中的異常。

這是因爲您的gtkmm信號處理程序實際上是由GTK + C代碼調用的,編譯爲C,並且無法將C++異常通過C代碼傳遞迴任何C++代碼可能調用的C代碼。