coredump使用方法

Linux系统下程序出错时会自动生成一个core文件,该文件包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。下面简单介绍coredump使用方法。

1.       coredump的开关和core文件大小限制

  • 首先检查生成core文件的选项是否打开

ulimit –c (查看core dump文件的大小,一般开始是0)

0         (表示coredump开关处于关闭状态)

  • 输入如下命令修改core文件大小,单位kbytes

ulimit -c 1024       #最大1024kb

ulimit -c unlimited  #取消大小限制

同时可以使用ulimit –a命令显示当前的各种用户进程限制

1ulimit –a
2###结果如下
3core file size          (blocks, -c) unlimited
4data seg size           (kbytes, -d) unlimited
5scheduling priority             (-e) 0
6file size               (blocks, -f) unlimited
7pending signals                 (-i) 38912
8max locked memory       (kbytes, -l) 32
9max memory size         (kbytes, -m) unlimited
10open files                      (-n) 1024
11pipe size            (512 bytes, -p) 8
12POSIX message queues     (bytes, -q) 819200
13real-time priority              (-r) 0
14stack size              (kbytes, -s) 10240
15cpu time               (seconds, -t) unlimited
16max user processes              (-u) 38912
17virtual memory          (kbytes, -v) unlimited
18file locks                      (-x) unlimited

2.       core文件的名称和生成路径

/proc/sys/kernel/core_uses_pid 可以控制产生的 core 文件的文件名中是否添加 pid 作为扩展 ,如果添加则文件内容为 1 ,否则为 0。需要修改的话,可以使用如下命令:

echo "1" > proc/sys/kernel/core_uses_pid

proc/sys/kernel/core_pattern 可以设置格式化的 core 文件保存位置或文件名 ,默认的是|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e。需要修改的话,可以使用如下命令:

echo "/media/test/core-%e-%p-%t">/proc/sys/kernel/core_pattern

参数列表:

%p - insert pid into filename 添加pid

%u - insert current uid into filename添加当前uid

%g - insert current gid into filename添加当前gid

%s - insert signal that caused the coredump into the filename添加导致产生core的信号

%t - insert UNIX time that the coredump occurred into filename添加core文件生成时的unix时间

%h - insert hostname where the coredump happened into filename添加主机名

%e - insert coredumping executable name into filename添加命令名

3.       生成core文件并使用gdb进行调试

  • 首先编写一个测试的程序,产生core文件
1mkdir /media/test
2 
3vi /media/test/test.c

输入如下内容

#include <assert.h>

int main()

{assert(0);

return 0;}

  • 将test.c的代码进行编译连接,生成并执行可执行文件test
1gcc –g test.c -o test
2 
3./test  ###执行可执行文件test
4 
5###结果如下:
6 
7###test : test.c : 4 : main: Assertion ‘0’ failed.
8 
9###已放弃(core dumped)
  • 使用gdb进行调试
1gdb -c /media/test/core-test-3779-1345098973

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值