關于UNIX下的core文件
在UNIX下調試程序,如果遇到內存溢出等問題的時候,經常在當前目錄下出現這樣一個文件:core
用指令>ls –l 可以發現,core是一個很大的文件,動輒上百M,很是耗費硬盤空間,所以一般我們都會及時將它清除掉,從而很少去關注它的真正內涵。其實core中放置的是執行進程的內存映像,其中的提示信息core dump就是信息轉儲的意思,在調試一個有問題的程序時它經常是很起作用的。下面我們就來探討一下,如何有效的利用這個core文件來調試我們的代碼。
1.例如調試程序一段名為samp.c 的程序,如下進行調試
$ cc -g samp.c -o samp
$ samp
當程序在運行的時候出現一個
Bus Error - core dumped
的提示,現在core生成了,為了獲得錯誤出現的位置,輸入
$ dbx samp
然后我們會得到以下提示
Type 'help' for help.
reading symbolic information ... reading symbolic information . . . [
using memory image in core]
25 x[i] = 0;
(dbx) quit
2.下面這個例子將要闡述怎么用dbx聯系進程,程序如下:
/***********
* looper.c: *
************/
main()
{
int i,x[10];
for (i = 0; i < 10;);
}
很顯然這是一個死循環程序,先編譯
$ cc -g looper.c -o looper
$ looper
當程序運行時,在另一個打開的窗口里用指令 ps -u UserID 獲得進程looper的ID,
PID TTY TIME COMMAND
68 console 0:04 sh
467 lft3 10:48 looper
從而得到進程的ID 467, 下面執行dbx
$ dbx -a 467
Waiting to attach to process 467...
Successfully attached to looper
Type 'help' for help.
reading symbolic information ...
stopped in main at line 5
5 for (i = 0; i < 10;);
(dbx) quit
現在你可以獲得程序出現問題的位置了。
以上程序在UNIX AIX4.3下調試通過。
關鍵字:core文件、程序
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解