记一次进程异常退出的问题排查

记一次进程异常退出的问题排查
首先查看内核日志,使用dmesg

mp_server[1479]: segfault at 20 ip 000000000043274c sp 00007fffa0ea1120 error 4 in mp_server[400000+1f8000]

根据网上的资料,error 后面的数字是比较有用的,上面的是4,转换成二进制是100。

bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址

所以含义就是用户态读取得内存地址无效。但是这个信息太笼统。于是还需要进一步调试,这个时候就要用到core dump了。

开启core dump(核心转储)

Core Dump通常是当程序崩溃的时候,操作系统记录下来当前时间程序的内存状态信息。其中还包括处理器寄存器,程序计数器和堆栈指针,存储器管理信息以及其他处理器和操作系统标志和信息。核心转储通常用于帮助诊断和调试计算机程序中的错误。

段错误调试神器 - Core Dump详解:https://www.cnblogs.com/lidabo/p/5014710.html

coredump详解http://blog.chinaunix.net/uid-20909886-id-3360994.html

你可能感兴趣的:(编程问题,Linux命令)