1.
編譯**時,需要加上
-g2.
開發板上執行
# ulimit -c unlimited -
此處是設定生成的
core
檔案大小
在開發板上執行時,如果有斷錯誤會有
segmentation fault
(core dumped)
, 紅色標記生成了
core
檔案。如果沒有生成
core
檔案一般是沒有設定
core
檔案大小
3. 將可執行程式
sea,
和生成的
sea.***core
檔案拷到交叉編譯伺服器(如
192.168.189.109
)上 .
4. 在伺服器上用交叉編譯器自帶的
gdb進行出錯位置的定位( 1
)將 openwrt
的工具鏈加到
path
中,下面是紅色
/yourpath
是我存放
openwrt-3.10.14
的路徑,需要替換成你自己的編譯路徑
#export path=$path:
/yourpath/
openwrt-3.10.14/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uclibc-0.9.33.2/bin#
mipsel-openwrt-linux-uclibc-gdb sea sea.946.11.1450080706.core
使用 bt
命令即可看到程式出錯的地方。
Linux下 錯誤除錯
1.訪問不存在的記憶體位址或系統保護的記憶體位址 如在函式呼叫中,本來應將位址傳給指標引數,卻誤將值傳入,再如寫scanf函式時,忘記 位址符號 2.訪問唯讀的記憶體位址 3.棧溢位,如遞迴程式,沒有退出條件,無限遞迴導致棧溢位 gdb除錯時發生錯誤 沒有符號表被讀取,請使用 file 命令,分析 ...
在Linux下產生並除錯core檔案
在linux下產生並除錯core檔案 先看看我用的是個什麼機器 uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file ...
在Linux下產生並除錯core檔案
uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file size是個0,程式出錯時不會產生core檔案了。ulimit ...