我的C程序墜毀在CentOS 5.7以下日誌:找到其中的libc我段錯誤發生
kernel: [1030648.130682] myapp[16454]: segfault at 0 ip b765f683 sp bfc3fa0c error 4 in libc-2.5.so[b75ee000+157000]
似乎libc中引起段錯誤的呼叫。我怎麼知道在libc的哪個函數中發生了段錯誤?
這是一個產品環境,沒有留下coredump文件;它很少再現。所以,我現在可以做的是分析libc中的哪個函數(由我的程序調用)導致此段錯誤,然後我可以檢查我的代碼。
如果有指針可以解釋這些數字的含義:ip b765f683,sp bfc3fa0c,錯誤4,b75ee000 + 157000,那將會很棒。我GOOGLE了,但沒有找到很好的參考。
謝謝。
你試過用你的標題搜索嗎? http://www.unknownroad.com/rtfm/gdbtut/gdbsegfault.html http://stackoverflow.com/questions/13337472/where-is-my-segmentation-fault – RedX
這就是爲什麼我們用'-g'標誌編譯,[使用像gdb這樣的工具](http://www.centos.org/docs/3/html/rhel-devtools-en-3/s1-gdb-debugging.html):所以我們可以自己解決,而不是使用Q&A站點作爲交互式調試器 –
抱歉,我不打算將此站點用作交互式調試器。我的問題是,sgefault發生在產品環境,沒有coredump文件;並且它很少再使用gdb來查看它發生的位置不起作用(因爲它不會崩潰)。所以,我現在可以做的是分析libc中的哪個函數(由我的程序調用)導致此段錯誤,然後我可以檢查我的代碼。 如果有解釋這些數字意味着什麼的指針會很棒:ip b765f683,sp bfc3fa0c,錯誤4,b75ee000 + 157000。我GOOGLE了,但沒有找到很好的參考。 –