程序长时间运行崩溃,但是没有保存core dump消息。可以用下面的方法定位出程序出错位置:
1. 用dmesg查找出错的代码段地址
ip 000000000041ccec 发生错误时指令的地址, sp sp 00007fff53c48700 堆栈指针
error 4的意义如下,可以对照参考:
bit2:值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址
4正好为用户态内存读操作访问出界, 读非法地址。
2.用addr2line将地址解析成函数名
可以看出出错函数是tmp_remove_subs