没有core dump文件和日志如何定位segment/core dump问题?
dmesg + addr2line
dmesg
打印环形缓冲区的内容。这些信息还会实时发送到syslogd
或klogd
(在它们运行时),最终以形式发送给/var/log/messages
;什么时候dmesg
最有用是捕获之前syslogd
和/或klogd
开始的启动时消息,以便将它们正确记录。dmesg:dmesg是(显示或驱动程序)消息。它用于检查或控制内核环形缓冲区。
messages:它包含全局系统消息,包括系统启动期间记录的消息。有几项已登录,
/var/log/messages
包括mail,cron,daemon,kern,auth等。
步骤:
以后, 在没有core时, 可以优先看:
1. /var/log/messages
2. dmesg dmesg /var/log/messages
dmesg -Tw 显示时间
dmesg |less or dmesg |more 分页查看。 (more 只能向后翻页)
3. /var/log/dmesg
4.journalctl -xe 命令(系统日志查询)
journalctl -k 和 "journalctl --dmesg 只显示系统的内核日志信息。
-f, --follow
只显示最新的日志项,并且不断显示新生成的日志项。 此选项隐含了 -n 选项。
Linux日志管理之journalctl ;https://www.cnblogs.com/askword/p/14506430.html
实例:
xxxxxx# ./a.out #执行程序
Segmentation fault (注意: 如果我机器上的core开关打开了, 就会提示Segmentation fault(core dumped), 类似提示大家应该见过, 比如Aborted(core dumped))
#查看消息
xxxxxx# cat /var/log/messages | grep -i seg
Apr 2 15:13:19 yyyyyy kernel: a.out[24764]: segfault at 0 ip 000000000804854f sp 00000000ffc9e7d4 error 6 in a.out[8048000+1000]
#用addr2line查看000000000804854f对应行
xxxxxx# addr2line -e a.out 000000000804854f