(gdb) s
Things:action (this=0x7fffffffdce0, packet=0x62c980) at file:41
41 if(thing->work(data)) {
(gdb) s
Program received signal SIGSEGV, Segmentation fault.
0x00000000004040e1 in Things:action (this=0x7fffffffdce0, packet=0x62c980) at file:41
41 if(thing->work(data)) {
在backtrace
中,調用工作(數據)是最後一個;並且在GDB管理的流程輸入work(data)
之前發生了分段(看起來像)。在list
中,沒有任何工作聲明(數據),所以猜測執行的代碼多於回溯和最新步驟所顯示的代碼。gdb檢測到分段錯誤。如何查明確切的來源?
- 該段錯誤是否來自不良指針作爲函數參數以不良方式傳遞(沒有「extern C」或其他一些準備工作)? (假設沒有執行功能代碼)
- 如何獲得詳細的跟蹤以確定是否有任何
work()
代碼在進入函數後執行,或者錯誤發生在此刻,當進程試圖進入函數時,從而傳遞它libc的參數?
`this` valid? `0x7fffffffdce0`對我來說似乎相當高。 – icecrime 2010-12-04 22:06:39