码迷,mamicode.com
首页 > 数据库 > 详细

linux下 gdb+coredump 调试偶发crash的程序

时间:2018-12-02 16:16:25      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:limit   相关   roc   ted   pattern   定义   null   并且   使用命令   

1. 打开 core dump

查看是否打开

ulimit -c

 如果输出0, 说明没有打开。

方法一:使用命令

ulimit -c unlimited

 可以打开,但是只对当前终端有效,

方法二: 配置 /etc/profile 文件

sudo gedit /etc/profile

 在最后添加一行

ulimit -S -c unlimited > /dev/null 2>&1

 可以始终打开core dump , unlimited 可以改为具体的数字,比方说 1024 来限制 core 文件的大小。

然后在 bashrc 文件里面 source /etc/profile 就可以使每个终端运行的程序 启动 core dump 了.

2. 设置core文件的路径和名字

生成的core file在哪里?
core file生成的地方是在/proc/sys/kernel/core_pattern文件定义的。
改动到生成到自己定义的目录的方法是:

echo "pattern" > /proc/sys/kernel/core_pattern

并且只有超级用户可以修改这两个文件。
"pattern"类似我们C语言打印字符串的格式,相关标识如下:
%%: 相当于%
%p: 相当于
%u: 相当于
%g: 相当于
%s: 相当于导致dump的信号的数字
%t: 相当于dump的时间
%h: 相当于hostname
%e: 相当于执行文件的名称
这时用如下命令设置生成的core file到系统/tmp目录下,并记录pid以及执行文件名
echo "/tmp/core-%e-%p" > proc/sys/kernel/core_pattern

linux下 gdb+coredump 调试偶发crash的程序

标签:limit   相关   roc   ted   pattern   定义   null   并且   使用命令   

原文地址:https://www.cnblogs.com/lvchaoshun/p/10053603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!