sysctl -a | grep core_pattern 查看core 的路径
linux下寻找段错误的方法 - 空水 - 博客园
/var/log/messages
dmesg -T
一、dmesg命令
dmesg命令,用于获取程序出错时的堆栈地址,用grep过滤出发生崩溃的程序,以及对应的堆栈信息
[Thu Nov 25 14:39:53 2021] brpc[3714121]: segfault at 8 ip 0000000002497383 sp 00007ff8bb1fead0 error 6 in brpc[400000+37a2000]
字段说明:
a) ip: 指令指针寄存器,字段后面的数字就是程序出错时程序执行的位置
b) sp: 堆栈指针寄存器
c) error:错误码,由三个字位组成的,从高到底分别为bit2 bit1和bit0
bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址
二、addr2line命令
将dmesg获取到的地址转换为代码中发成错误的文件、行号及函数名
addr2line -e 进程名 ip指令地址 -f
1
三、c++filt命令
源码文件中的变量名和函数名被修饰后,通过 c++filt 命令可以还原回来
代码捕获段错误事件
Linux内核调试方法总结之backtrace - 者旨於陽 - 博客园