看板 C_and_CPP 關於我們 聯絡資訊
藉此一問 我查了一些網頁 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