- 首先遇到這個問題時,系統(tǒng)提供的信息很少究珊。
- 各種問題的可能行都會導(dǎo)致這種問題披粟,如野指針庄岖,動態(tài)鏈接庫等原因
下面講述在linux系統(tǒng)下面如果調(diào)試這個問題许蓖,并找出現(xiàn)該問題的原因
- 系統(tǒng)已經(jīng)安裝了
gdb
- 如果使用
QT Creator
,先編譯運行漓摩,報錯之后裙士,用命令行進入項目目錄,執(zhí)行完之后系統(tǒng)會自動在目錄里面生成一個core*
文件管毙,可以用ls core*
查詢腿椎,接著使用gdb exefile core
進行調(diào)試(exefile是make
之后的可執(zhí)行文件,core
文件是當前報錯之后系統(tǒng)拋出來的文件)锅风。 - 如果你使用命令行進行
qmake 和 make
,請保證QT Creator
的qmake 和make
版本和命令行的一致鞍泉。
注意:系統(tǒng)默認core文件的大小為0皱埠,如果在項目的目錄沒有產(chǎn)生core
文件,則需要用ulimit
命令查看和修改core文件的大小咖驮。使用ulimit -a
查看大小边器,使用 ulimit -c unlimited
設(shè)置core文件不做限制。
以我的代碼為例:
image.png
image.png
- 其中
Map3DWork
是可執(zhí)行文件托修,當運行該文件時出現(xiàn)一下的問:
image.png
-
首先查看core文件大小忘巧,如果是0則使用
ulimit -c unlimited
設(shè)置一下。我的已經(jīng)設(shè)置過了:
image.png -
因為我的core文件大小設(shè)置成不受限制的睦刃,所以上上步運行
Map3DWork
時候已經(jīng)生成了core文件砚嘴,用ls core*
查詢得到:image.png -
接著使用
gdb Map3DWork core
,然后輸入r
再接著輸入bt
進行調(diào)試,可以看到導(dǎo)致問題出現(xiàn)的原因了
image.png