设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 2119|回复: 1

Linux使用gdb设置core_pattern输出文件路径,调试进程死锁bug 异常退出dump文件快照,例如生成kangle进程ulimit 无限大小

[复制链接]
 成长值: 348

签到天数: 4741 天

[LV.Master]伴坛终老

发表于 2018/6/26 18:17 | 显示全部楼层 |阅读模式 |Google Chrome 67.0.3396.99|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
Linux使用gdb设置core_pattern输出文件路径,调试进程死锁bug 异常退出dump文件快照,例如生成kangle进程ulimit 无限大小

使用ulimit -c unlimited,代表无限core文件大小限制(注意这个是c,用途不一样),单位KB,默认为0代表不生成core文件在程序根目录
  1. ulimit -c unlimited
  2. echo "* soft core unlimited" >> /etc/security/limits.conf
  3. echo "* hard core unlimited" >> /etc/security/limits.conf
复制代码


查看当前文件路径,默认为root目录下core文件
  1. cat /proc/sys/kernel/core_pattern
复制代码

改成如下并且保存可以设置生成文件不在根目录下
  1. /home/core-%e-%s-%t.%p
复制代码


参考
%%:相当于%
%p:相当于<pid>
%u:相当于<uid>
%g:相当于<gid>
%s:相当于导致dump的信号的数字
%t:相当于dump的时间
%e:相当于执行文件的名称
%h:相当于hostname


另一种方式也可以这样用命令临时生效
  1. sysctl -w kernel.core_pattern=/home/core-%e-%s-%t.%p
复制代码


查看是否生效
  1. sysctl -a | grep kernel.core
复制代码


永久生效可以在 /etc/sysctl.conf 文件中增加:
  1. kernel.core_pattern=/home/core-%e-%s-%t.%p
复制代码


加好后,如果你想不重启看看效果的话,则用下面的命令:
  1. sysctl -p /etc/sysctl.conf
复制代码



测试文件生成,会杀死当前登录窗口
  1. kill -s SIGSEGV $
复制代码



有了core文件后如何打开呢
  1. yum -y install gdb
复制代码


执行info t和bt可以直接打印结果

gdb 程序二进制文件绝对路径 core文件
也是可以执行那两个命令

然后t 0
bt
t 1
bt
t 2
bt
t 3
bt
切换线程
一直到t 7

查看每个线程的bt,t n是切换线程

[发帖际遇]: 一个袋子砸在了 小樱 头上,小樱 赚了 1 樱币. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

 成长值: 348

签到天数: 4741 天

[LV.Master]伴坛终老

发表于 2018/6/28 01:55 | 显示全部楼层 |Google Chrome 67.0.3396.87|Windows 10
QQ图片20180628015525.png
测试结果例如
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/12/27 01:35 , Processed in 0.154692 second(s), 23 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表