首页 > 代码库 > Linux core dump 分析及相关调试
Linux core dump 分析及相关调试
core是core dump文件,是linux服务器的一种机制。core是个程序的严重问题,会致使程序直接挂掉,需要恢复。
需要注意的东西
在程序挂掉的过程中,会纪录程序的内存信息和cpu调用堆栈信息,当程序占用大量内存的时候,比如40G,那core文件可能会达到60G多,那写文件会持续数十分钟,这么长时间流量都会损失,并且写大文件对wio的占用特别大,严重影响本台服务器的其他服务,对于在线服务,会用很多超时,或者严重的是一段时间无法提供服务。所以,core文件监控,大小控制也很重要。
产生的原因
core文件产生原因很多,有主动core 请求的,也有是程序的非法操作导致os发送sigsegv相关的信号。主动core的方法:1)程序在运行中,需要查看里面的进程或者线程的运行情况,主动生成core。先gdb attach 进程号再使用generatercore命令产生core2)发出kill 命令被动core:这个是由于程序的非法操作,比如非法写内存,非法读等触发os的保护程序,由os发出相关信号给程序,导致程序core掉。core相关设置
1)修改/proc/sys/kernel/core_pattern文件,%p 出Core进程的PID
%u 出Core进程的UID
%s 造成Core的signal号
%t 出Core的时间,从1970-01-0100:00:00开始的秒数
%e 出Core进程对应的可执行文件名
2)ulimit -c 此命令可以显示当前OS对于Core文件大小的限制,如果为0,则表示不允许产生Core文件。如果想进行修改,可以使用ulimit -c n n表示core文件大小限制ulimit -c unlimited 不限制大小core的用途
core文件相当有用, core文件相当于是保存程序出错误的现场给程序员进行调试,找问题。它会保存程序的调用堆栈信息,内存信息及CPU使用的信息等。调试技术
使用gdb调试:
gdb 程序 core 使用bt查看堆栈 使用info threads查看线程信息 thread n跳到对应的线程里面去,进行调试 f n 跳到相应的堆栈里面去 p 打印变量
Linux core dump 分析及相关调试
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。