Linux core dump的調試技術
有的程序可以通過編譯, 但在運行時會出現(xiàn)Segment fault(段錯誤). 這通常都是指針錯誤引起的.以下是我們詳細的對Linux core dump的調試技術進行的介紹,想能幫助大家
1.Linux core dump 前言:
有的程序可以通過編譯, 但在運行時會出現(xiàn)Segment fault(段錯誤). 這通常都是指針錯誤引起的.
但這不像編譯錯誤一樣會提示到文件->行, 而是沒有任何信息, 使得我們的調試變得困難起來.
2. Linux core dumpgdb:
有一種辦法是, 我們用gdb的step, 一步一步尋找.
這放在短小的代碼中是可行的, 但要讓你step一個上萬行的代碼, 我想你會從此厭惡程序員這個名字, 而把他叫做調試員.
我們還有更好的辦法, 這就是core file.
3. Linux core dumpulimit:
如果想讓系統(tǒng)在信號中斷造成的錯誤時產(chǎn)生core文件, 我們需要在shell中按如下設置:
#設置core大小為無限
ulimit -c unlimited
#設置文件大小為無限
ulimit unlimited
這些需要有root權限, 在ubuntu下每次重新打開中斷都需要重新輸入上面的第一條命令, 來設置core大小為無限.
4. Linux core dump用gdb查看core文件:
下面我們可以在發(fā)生運行時信號引起的錯誤時發(fā)生core dump了.
發(fā)生core dump之后, 用gdb進行查看core文件的內(nèi)容, 以定位文件中引發(fā)core dump的行.
gdb [exec file] [core file]
如:
gdb ./test test.core
在進入gdb后, 用bt命令查看backtrace以檢查發(fā)生程序運行到哪里, 來定位core dump的文件->行.
5.要怎麼才不會讓 core 文件出現(xiàn)?
如果用的是tcsh的話, 以試著在 .tcshrc 里加一行:
limit coredumpsize 0
如果用的是bash的話, 在/etc/profile里加上(或者修改)一條:
ulimit -c 0
【編輯推薦】
- MySQLdump增量備份、完全備份與恢復
- Linux rsync同步由手動到自動
- MySQLdump增量備份、完全備份與恢復
- CentOS系統(tǒng)如何解決鼠標花屏的問題
- RHEL 5.2下SendMail+dovecot郵件系統(tǒng)配置教程