您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

关于UNIX下的core文件

添加时间:2011-6-4  添加: admin 
 

在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文件、程序

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站