Linux core dump 分析及相关调试

core是core dump文件,是linux服务器的一种机制。core是个程序的严重问题,会致使程序直接挂掉,需要恢复。

需要注意的东西

在程序挂掉的过程中,会纪录程序的内存信息和cpu调用堆栈信息,当程序占用大量内存的时候,比如40G,那core文件可能会达到60G多,那写文件会持续数十分钟,这么长时间流量都会损失,并且写大文件对wio的占用特别大,严重影响本台服务器的其他服务,对于在线服务,会用很多超时,或者严重的是一段时间无法提供服务。所以,core文件监控,大小控制也很重要。

产生的原因

core文件产生原因很多,有主动core 请求的,也有是程序的非法操作导致os发送sigsegv相关的信号。

主动core的方法:

1)程序在运行中,需要查看里面的进程或者线程的运行情况,主动生成core。

先gdb attach 进程号

再使用generatercore命令产生core

2)发出kill 命令

被动core:

这个是由于程序的非法操作,比如非法写内存,非法读等触发os的保护程序,由os发出相关信号给程序,导致程序core掉。

core相关设置

1)修改/proc/sys/kernel/core_pattern文件,

此文件用于控制Core文件产生的文件名,默认情况下,此文件内容只有一行内容:“core”,此文件支持定制,一般使用%配合不同的字符,这里罗列几种:

%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 打印变量
时间: 2024-10-13 22:26:07

Linux core dump 分析及相关调试的相关文章

Linux core dump file详解

Linux core dump file详解 http://www.cnblogs.com/langqi250/archive/2013/03/05/2944931.html

Segment fault及LINUX core dump详解

源自:http://andyniu.iteye.com/blog/1965571 core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key pieces of

Segment fault及LINUX core dump详解 (zz)

C 程序在进行中发生segment fault(core dump)错误,通常与内存操作不当有关,主要有以下几种情况: (1)数组越界. (2)修改了只读内存. (3)scanf("%d",n),n不是指针. …… 1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来. 2. gdb: 有一种办法是, 我们用gdb的step

LINUX core dump详解(转)

转自:http://blog.163.com/[email protected]/blog/static/8442751200710255441327/ 1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来.2. gdb: 有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代

android 电视core dump分析

测试测了个bug, 操作dtmb 频道的时候系统重启, 由于生成了core dump文件,所以先看下core dump. 一 . 要想调试core dump,首先要生成core dump, 一般只有c/c++编译生成的二进制程序崩溃了才会生成core dump, 一般需要以下设置. 1) 运行ulimit -c  unlimited ----> 要置成unlimited, 这个代表core dump文件大小,默认是0, 即不生成core dump 2)设置core dump文件路径以及文件名格式

记一次Java Core Dump分析过程

#背景提要 很久没有亲自动手部署代码了,命令行的亲切感越来越低.放飞了键盘,习惯了鼠标操作的windows环境.冷不丁实操部署也是不错的. 常常在部署时,运维同学对于[hs_err_pid]文件视而不见.殊不知这是Java 虚拟机崩溃日志. #这次是如何分析问题的? 一.首先查看日志头文件 # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f90e

linux core dump

core dump  调试: gdb  + 可执行文件名  + core dump 文件 gdb   Searcher    core.8159 bt 查看 原文地址:https://www.cnblogs.com/xinping-study/p/11757476.html

linux core dump debug

1.check core dump; ulimit -c or ulimit -a [email protected]:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31156 max locked memory (kbyt

Linux core dump文件生成与使用

一.说明 在前一家公司经常测出一些缓冲区溢出导致进程挂掉的问题,开发经常要求在调试模式进行测试,生成core文件给他们定位问题. 当时的调试模式启动只是修改某些配置文件重新启动即可,所以在很长一段时间内并不知道到底要如何生成core文件及core文件如何使用. 二.配置允许生成core文件 临时配置使用ulimit命令进行操作即可: # 查看当前用户core文件配置情况 # 0表示允许core文件大小为0,亦即不允许生成 ulimit -c # 限制core文件大小 # 禁止生成core文件 u