所以當glibc崩潰時,它有一個* glibc檢測到*崩潰消息。然後它打印一串回溯,就像覆蓋glibc崩潰
*** glibc detected *** ./odin: free(): invalid pointer: 0xbfba4444 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6b161)[0xb75f9161]
/lib/tls/i686/cmov/libc.so.6(+0x6c9b8)[0xb75fa9b8]
/lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0xb75fda9d]
/usr/lib/libstdc++.so.6(_ZdlPv+0x1f)[0xb77da2ef]
一切都很好,但是當事情崩潰,我一直在這樣做回溯(),然後使用系統調用來addr2line和打印實際點其他情況該功能。但是當它發生glibc崩潰時,它會繞過我所稱的任何信號處理程序。
有沒有辦法對付這些glibc崩潰?
嗯,我的程序已經有信號(SIGABRT,等等)很長一段時間,他們沒有觸發(他們會打印一堆東西)**編輯**:他們實際上觸發了,我只是沒有沒有看到它。我也會嘗試valgrind,但是我不知怎麼的時候沒有被抓到。 – kamziro 2012-04-17 12:55:34