作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題Re: [問題] segmentation fault
時間Thu Mar 8 23:57:22 2012
藉此一問
我查了一些網頁
http://yczhuang.blogspot.com/2008/06/segmentation-fault.html
http://www.cplusplus.com/reference/clibrary/csignal/signal/
我比較不清楚...
這個signal函式 設計的本意是什麼
爬文都看到是在討論 他宣告扯到function pointer..
我剛用VC測了一下
縱使我觸發 segmentation fault (dereference null ptr)
他跑完那個handler也是照樣當掉
我原本是想說
有沒有辦法很暴力的error handling
讓程式當掉前 都被我這個handler吃掉
讓他不會強制中止
之前是有測試 MS的 SEH 那個機制
但是他似乎要在每一段code block都夾起來__try __expect
那種 多條thread在互動的程式比較不好 一次統一在一個地方handle所有error
藉此提出這個問題
因為看sample感覺只是讓程式crash前 可以多做一些處理....
謝謝
※ 引述《sudada (嘰咕嘰咕嘰咕)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Linux GCC G++
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 問題(Question):
: 這篇不是要來問code的!
: 小弟最近在做一個平台
: 上面會執行各式各樣的程式碼
: 所以我想遲早會碰到segmentation fault這個問題
: 請問大家
: 有沒有辦法在自己的程式端就處理掉違規存取的辦法呢?
: 不然一出錯程式就關掉也不是辦法
: 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.137.84
→ james732:segmentation fault應該要治本的解決,而不是把它吃掉XD 03/09 00:02
→ QQ29:對阿...只是有些例外真的是預期之外~ 03/09 00:15
→ QQ29:或是考慮到程式crash對user觀感很差的考量 有時候不當掉 03/09 00:15
→ QQ29:也許是個 比較好的處理方式.... 03/09 00:16
推 mingtai1:作產品時,發現當掉是好事,有錯沒當的話..可能是客戶瘋掉 03/09 00:17
→ QQ29:想說 我能發現的問題都解了 怕有預期之外 想知道有沒有 03/09 00:20
→ QQ29:暴力法 可以做到這件事~ 03/09 00:20
→ purincess:windows上沒辦法用signal handler吃sigsegv, msdn有寫 03/09 00:27
→ QQ29:那原本這signal 的用途是什麼呀@@ 03/09 00:51
→ adxis:debug 03/09 01:44
→ purincess:windows沒有好好遵照posix規格吧(爆) 03/09 01:48
推 Bencrie:可以吧,我記得是要弄long jump讓他跳回原來出錯的位置 03/09 12:44
推 Chikei:C ISO draft 7.14.1.1,SIGFPE SIGILL SIGSEGV下從handler 03/09 14:21
→ Chikei:返回的之後是UB,所以別想太多... 03/09 14:21
→ Chikei:Windows下就乖乖玩SEH吧XD 03/09 14:23