如何查看core文件是如何产生的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看core文件是如何产生的相关的知识,希望对你有一定的参考价值。

参考技术A 1.用gdb打开core文件来确定。如下例子:

[plain] view plain copy
[xuzhina@localhost ~]$ ls
asm.list Desktop Downloads Pictures Templates vmtoolsd
core.22625 Documents Music Public Videos vmtoolsd.tar.gz
[xuzhina@localhost ~]$ ls core.22625
core.22625
[xuzhina@localhost ~]$ gdb -c core.22625
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-51.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
[New LWP 22625]
[New LWP 22680]
Core was generated by `/usr/lib/vmware-tools/sbin64/vmtoolsd -n vmusr --blockFd 3'.
Program terminated with signal 11, Segmentation fault.
#0 0x0000000000000000 in ?? ()
(gdb)

2.用file命令来确定,如下例子:

[plain] view plain copy
[xuzhina@localhost ~]$ ls -l core.22625
-rw-------. 1 xuzhina xuzhina 16257024 Sep 5 23:50 core.22625
[xuzhina@localhost ~]$ file core.22625
core.22625: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from '/usr/lib/vmware-tools/sbin64/vmtoolsd -n vmusr --blockFd 3'

Core文件产生及处理方式

core的信号处理方式 : 终止进程 + 产生core文件

当执行下面的代码后,会出现段错误:

通常在linux中为了调试,快速找到出现问题的地方,会产生一个core文件

但一般来说,如果没有经过配置,core 文件大小是0,必须先设置一下,通过ulimit -a可以查看到:

  设置方法:

ulimit -c unlimited

  取消方法则是:

ulimit -c 0

  还可以设置生成的core文件格式:

/proc/sys/kernel/core_pattern

  这个文件,不能直接用VI,会显示没有权限,但可以在root权限下用重定向实现修改:

echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern

  以下是参数列表:

   %p - insert pid into filename 添加 pid
    %u - insert current uid into filename 添加当前 uid
    %g - insert current gid into filename 添加当前 gid
    %s - insert signal that caused the coredump into the filename 添加导致产生 core 的信号
    %t - insert UNIX time that the coredump occurred into filename 添加 core 文件生成时的 unix 时间
    %h - insert hostname where the coredump happened into filename 添加主机名
    %e - insert coredumping executable name into filename 添加命令名

  

以上是关于如何查看core文件是如何产生的的主要内容,如果未能解决你的问题,请参考以下文章

为啥没有产生core 文件

为啥程序崩溃了,没有产生core文件

如何查询和修改Linux操作系统生成core dump文件的默认路径?

centos7下怎样产生core文件

如何通过adb命令查看data目录下的文件

如何通过adb命令查看data目录下的文件