有的程式可以通過編譯, 但在執行時會出現segment fault(段錯誤). 這通常都是指標錯誤引起的.以下是我們詳細的對linux core dump的除錯技術進行的介紹,想能幫助大家
1.linux core dump 前言:
有的程式可以通過編譯, 但在執行時會出現segment fault(段錯誤). 這通常都是指標錯誤引起的.
但這不像編譯錯誤一樣會提示到檔案->行, 而是沒有任何資訊, 使得我們的除錯變得困難起來.
2. linux core dumpgdb:
有一種辦法是, 我們用gdb的step, 一步一步尋找.
這放在短小的**中是可行的, 但要讓你step乙個上萬行的**, 我想你會從此厭惡程式設計師這個名字, 而把他叫做除錯員.
我們還有更好的辦法, 這就是core file.
3. linux core dumpulimit:
如果想讓系統在訊號中斷造成的錯誤時產生core檔案, 我們需要在shell中按如下設定:
#設定core大小為無限
ulimit -c unlimited
#設定檔案大小為無限
ulimit unlimited
這些需要有root許可權, 在ubuntu下每次重新開啟中斷都需要重新輸入上面的第一條命令, 來設定core大小為無限.
4. linux core dump用gdb檢視core檔案:
下面我們可以在發生執行時訊號引起的錯誤時發生core dump了.
發生core dump之後, 用gdb進行檢視core檔案的內容, 以定位檔案中引發core dump的行.
gdb [exec file] [core file]
如:gdb ./test test.core
在進入gdb後, 用bt命令檢視backtrace以檢查發生程式執行到**, 來定位core dump的檔案->行.
5.要怎麼才不會讓 core 檔案出現?
如果用的是tcsh的話, 以試著在 .tcshrc 裡加一行:
limit coredumpsize 0
如果用的是bash的話, 在/etc/profile裡加上(或者修改)一條:
ulimit -c 0
Linux Coredump 配置生成例項
coredump是linux程式執行時的記憶體映象,當程式發生異常 獲儲存,用於程式除錯分析。為程式儲存coredump 又稱core 檔案需要系統配置支援。ulimit c 0 ulimit c unlimited ulimit c 1024 0表示不生成檔案。可以通過 ulimit c 設定乙個...
Linux core dump檔案介紹及除錯
1.core檔案的簡單介紹 在乙個程式崩潰時,它一般會在程式的當前目錄下生成乙個core檔案。core檔案僅僅是乙個記憶體映象 同時加上除錯資訊 主要是用來除錯的。2.開啟或關閉core檔案的生成 以下命令可以檢查生成core檔案的選項是否開啟 ulimit a 該命令將顯示所有的使用者定製,其中選...
Linux core dump 分析及相關除錯
core是core dump檔案,是linux伺服器的一種機制。core是個程式的嚴重問題,會致使程式直接掛掉,需要恢復。core檔案產生原因很多,有主動core 請求的,也有是程式的非法操作導致os傳送sigsegv相關的訊號。主動core的方法 1 程式在執行中,需要檢視裡面的程序或者執行緒的運...