精华内容
下载资源
问答
  • 制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件 1,安装kernel-debuginfo$(uname -r).rpm和kernel-debuginfo-common-$(uname -r).rpm 2,开启内核崩溃转储service kdump start3,开启Magic System Request Key...
    制造内核崩溃并使用crash分析内核崩溃产生的vmcore文件
    1,安装kernel-debuginfo$(uname -r).rpm和kernel-debuginfo-common-$(uname -r).rpm
    2,开启内核崩溃转储
    service kdump start
    3,开启Magic System Request Key功能
    echo 1 >/proc/sys/kernel/sysrq
    4,永久开启Magci System Request Key功能
    编辑/etc/sysctl.conf文件使kernel.sysrq的值为1,1表示开启 0表示关闭
    vim /etc/sysctl.conf 
    kernel.sysrq = 1 
    5,制造系统崩溃
    echo c >/proc/sysrq-trigger
    6,等待系统重启后重新登录进入分析崩溃产生的vmcore文件
    6.1 使用crash分析vmcore文件
    crash   /usr/lib/debug/lib/module/2.6.32-431.el6.x86_64/vmlinux   /var/crash/127.0.0.1-2017-04-05-15\:12\:12/vmcore
     
    6.2 查看崩溃前的系统调用
    crash> bt
     
    从上图我们看到了一个异常[exception RIP: sysrq_handle_crash+22]。下面进一步对这个调用的函数进行分析
    6.3 反汇编该段函数
    crash> dis -l  sysrq_handle_crash+22
     
    如图可以看到出现异常的地方是在/usr/src/debug/kernel-2.6.32-431.el6/linux-2.6.32-431.el6.x86_64/drivers/char/sysrq.c:文件的130行的地方,接下来我们查看一下该文件的130行写着什么
    6.4 分析异常函数所对应的文件源码
     
    从上图可以看出该函数是强制崩溃,代码也给出了注释:/* force panic */ ,把这段代码copy出来用gdb进行调试会发现报SIGSEGV的错,如下图
     
    program received signal SIGSEGV,Segmentation fault. 经过查阅资料得知SIGSEGV信号是无效的的内存访问。就这样问题被一步一步的找出了,此处是人为调用了系统的强制崩溃,只是为了帮助理解分析系统崩溃的思路和过程。

    转载于:https://www.cnblogs.com/sonwnja/p/6802844.html

    展开全文
  • 内核崩溃:OOPS , panic, core dump panic: 当内核遇到严重错误的时候,内核panic,立马崩溃。死机。 oops: oops是内核遇到错误时发出的提示“声音”,oops有时候会触发panic,有时候不会,而是直接杀死当前进程...

    APP 崩溃:用户进程crash肯定是kernel让它crash的,

    内核崩溃:OOPS , panic

     

    panic: 当内核遇到严重错误的时候,内核panic,立马崩溃。死机。

    oops: oops是内核遇到错误时发出的提示“声音”,oops有时候会触发panic,有时候不会,而是直接杀死当前进程,系统可以继续运行。

    core dump: 如果打开了core dump选项,会产生core文件,在dmsg里一般也会找到panic,oops等关键字

     

    展开全文
  • Linux内核崩溃转储机制
  • 模拟linux内核崩溃

    千次阅读 2018-06-07 15:24:32
    1、一条简单的命令即可 echo c &... /proc/sysrq-trigger 操作系统会进入内核崩溃模式; 1.1简单的操作系统会进入系统崩溃模式,比如:cirros 1.2成熟的操作系统会重启操作系统,比如:centos7...

    1、一条简单的命令即可

     echo c > /proc/sysrq-trigger

         操作系统会进入内核崩溃模式;

         1.1简单的操作系统会进入系统崩溃模式,比如:cirros

         1.2成熟的操作系统会重启操作系统,比如:centos7

    展开全文
  • crash分析linux内核崩溃转储文件vmcore

    千次阅读 2020-04-21 20:55:42
    文章目录一、调试环境准备二、使用crash分析vmcore1...我们在Kdump-内核崩溃转储服务中,介绍了kdump服务可以在系统崩溃时,生成崩溃转储文件vmcore,便于我们分析内核崩溃原因,那么,下面我们就来看下如何使用cras...


    我们在Kdump-内核崩溃转储服务中,介绍了kdump服务可以在系统崩溃时,生成崩溃转储文件vmcore,便于我们分析内核崩溃原因,那么,下面我们就来看下如何使用crash工具可以帮助我们分析系统崩溃原因。

    crash工具,跟gdb很类似,它可以交互的分析运行中的内核,也可以分析由kdump、netdump、diskdump、xendump产生的core dump文件。

    本文实验环境:

    [root@yglocal ~]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core) 
    [root@yglocal ~]# uname -r
    3.10.0-957.el7.x86_64
    


    一、调试环境准备

    使用crash工具分析vmcore,需要:

    • crash工具
    • 崩溃转储文件(vmcore)
    • 发生崩溃的内核映像文件(vmlinux),包含调试内核所需调试信息

    一般系统在安装后在/boot目录下,也有个内核映像文件,vmlinuxz开头的文件,但是它是压缩过后的,无法完成调试工作,如下图:
    在这里插入图片描述
    所以我们需要下载带有完整调试信息的内核映像文件(编译时带-g选项),内核调试信息包kernel-debuginfo有两个:

    • kernel-debuginfo
    • kernel-debuginfo-common

    对于centos系统,可以在http://debuginfo.centos.org/上下载到各发行版本所需的调试包。
    对于centos7.x,安装对应内核版本的内核调试包,执行如下即可:

    # wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-common-x86_64-`uname -r`.rpm
    # wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-`uname -r`.rpm
    

    注意:如果系统为centos6.x,则将debuginfo.centos.org/后面的7改成6即可。

    对于oracle linux系统,可以在https://oss.oracle.com/上下载内核调试包,比如现在要找oracle linux6.6的:

    # wget https://oss.oracle.com/ol6/debuginfo/kernel-uek-debuginfo-3.8.13-44.1.1.el6uek.x86_64.rpm
    # wget https://oss.oracle.com/ol6/debuginfo/kernel-uek-debuginfo-common-3.8.13-44.1.1.el6uek.x86_64.rpm
    

    下载完后,安装内核调试包:

    rpm -ivh *.rpm
    

    安装完成后,可以在/lib/debug/lib/modules/3.10.0-957.el7.x86_64/(或者是/usr/lib/…下面)目录下看到vmlinux内核映像文件:

    [root@yglocal ~]# ll -th /lib/debug/lib/modules/3.10.0-957.el7.x86_64/
    total 419M
    drwxr-xr-x.  2 root root  119 Mar 26 13:13 vdso
    drwxr-xr-x. 12 root root  128 Mar 26 13:13 kernel
    -rwxr-xr-x.  2 root root 419M Nov  9  2018 vmlinux
    

    再来安装crash工具,先查看下是否已安装

    [root@yglocal ~]# rpm -q crash
    crash-7.2.3-8.el7.x86_64
    

    若没有安装过,则执行以下命令安装:

    yum install crash
    


    二、使用crash分析vmcore

    分析vmcore文件,执行命令:

    crash /lib/debug/lib/modules/3.10.0-957.el7.x86_64/vmlinux /var/crash/127.0.0.1-2020-04-04-14\:10\:45/vmcore
    

    在这里插入图片描述
    其中下面这些信息,就是导致系统崩溃的直接原因及进程相关信息:

     PANIC: "BUG: unable to handle kernel NULL pointer dereference at 000000000000000c"
        PID: 27005
    COMMAND: "pickup"
       TASK: ffff997b388ae180  [THREAD_INFO: ffff997b37f64000]
        CPU: 1
      STATE: TASK_RUNNING (PANIC)
    

    1、bt命令

    backtrace打印内核栈回溯信息,bt pid 打印指定进程栈信息。
    在这里插入图片描述
    最重要的信息:[exception RIP: my_openat+36],指出发生异常的指令信息

    RIP: ffffffffc07c5024,可以得知,发生crash的函数是my_openat中,偏移36字节处的指令。

    这里,对应x86-64汇编,应用层下来的系统调用对应的6个参数存放的寄存器依次对应:rdi、rsi、rdx、rcx、r8、r9。对于多于6个参数的,仍存储在栈上。

    2、log命令

    打印vmcore所在的系统内核日志信息
    在这里插入图片描述
    可以分析出当时,内核启动的各项配置,内核最后崩溃时异常日志信息。

    3、dis命令

    dis -l (function+offset) 10 反汇编出指令所在代码开始,10行代码
    在这里插入图片描述
    幸运的话,反汇编出来会直接对应源码,我们这里只能看出执行mov 0x70(%rdi),%r13时系统崩溃。

    4、mod命令

    mod 查看当时内核加载的所有内核模块信息
    在这里插入图片描述
    重装加载进改内核模块:

    crash> mod -s my_test_lkm /mnt/hgfs/test_ko/lkm-test05/my_test_lkm.ko
         MODULE       NAME                            SIZE  OBJECT FILE
    ffffffffc07c7000  my_test_lkm                    12740  /mnt/hgfs/test_ko/lkm-test05/my_test_lkm.ko
    

    5、sym命令

    sym 转换指定符号为其虚拟地址,显示系统中符号信息

    如上面bt打印的RIP: ffffffffc07c5024,使用sym转换查看系统符号信息
    sym addr 通过虚拟地址,显示symbol和源码位置

    crash> sym ffffffffc07c5024
    ffffffffc07c5024 (t) my_openat+36 [my_test_lkm] /mnt/hgfs/test_ko/lkm-test05/my_lkm.c: 25
    

    这时就可以看出对应到my_test_lkm模块的源码,/mnt/hgfs/test_ko/lkm-test05/my_lkm.c文件里第25行,查看代码可以发现:
    在这里插入图片描述
    原因:这种hook写法在centos8.x上的最新系统调用约定,是内核版本4.17及之后采用的调用约定。而我当前环境是centos7.6,内核版本为3.10。0,其调用约定并不是这样的,所以这样取参数是有问题的。

    sym symbol 通过symbol,显示虚拟地址和源码位置:

    crash> sym vfs_fstat
    ffffffff81196f30 (T) vfs_fstat ../debug/kernel-3.8.13/linux-3.8.13-44.1.1.el6uek/fs/stat.c: 59
    

    6、ps命令

    ps 打印内核崩溃时,正常的进程信息
    在这里插入图片描述
    带 > 标识代表是活跃的进程,ps pid打印某指定进程的状态信息:

    crash> ps 27005
       PID    PPID  CPU       TASK        ST  %MEM     VSZ    RSS  COMM
    > 27005   7783   1  ffff997b388ae180  RU   0.2   91732   4124  pickup
    

    查看指定进程的进程树(ps -p pid)

    crash> ps -p 85151
    PID: 0      TASK: ffffffff818b6420  CPU: 0   COMMAND: "swapper/0"
     PID: 1      TASK: ffff881f91dae040  CPU: 28  COMMAND: "init"
      PID: 14544  TASK: ffff881f8d7b05c0  CPU: 11  COMMAND: "init.tfa"
       PID: 85138  TASK: ffff880bab01a400  CPU: 8   COMMAND: "tfactl"
        PID: 85151  TASK: ffff880b7a728380  CPU: 17  COMMAND: "perl"
    
    

    7、files命令

    files pid 打印指定进程所打开的文件信息
    在这里插入图片描述

    8、vm命令

    vm pid 打印某指定进程当时虚拟内存基本信息
    在这里插入图片描述

    9、task命令

    task 查看当前进程或指定进程task_struct和thread_info的信息
    在这里插入图片描述

    10、kmem命令

    kmen 查看当时系统内存使用信息

    kmem [-f|-F|-c|-C|-i|-v|-V|-n|-z|-o|-h] [-p | -m member[,member]]
    
           [[-s|-S] [slab] [-I slab[,slab]]] [-g [flags]] [[-P] address]]
    

    我们是要kmem -i查看:
    在这里插入图片描述

    11、struct命令

    1、查看结构体成员变量,直接struct后面跟结构体名,比如我要看下内核中dentry结构体的定义,可以这样:

    crash> struct dentry
    struct dentry {
        unsigned int d_flags;
        seqcount_t d_seq;
        struct hlist_bl_node d_hash;
        struct dentry *d_parent;
        struct qstr d_name;
        struct inode *d_inode;
        unsigned char d_iname[32];
        unsigned int d_count;
        spinlock_t d_lock;
        const struct dentry_operations *d_op;
        struct super_block *d_sb;
        long unsigned int d_time;
        void *d_fsdata;
        struct list_head d_lru;
        union {
            struct list_head d_child;
            struct callback_head d_rcu;
        } d_u;
        struct list_head d_subdirs;
        struct hlist_node d_alias;
    }
    SIZE: 192
    

    2、查看成员变量在结构体中的偏移量,struct加-o选项:

    crash> struct dentry -o
    struct dentry {
        [0] unsigned int d_flags;
        [4] seqcount_t d_seq;
        [8] struct hlist_bl_node d_hash;
       [24] struct dentry *d_parent;
       [32] struct qstr d_name;
       [48] struct inode *d_inode;
       [56] unsigned char d_iname[32];
       [88] unsigned int d_count;
       [92] spinlock_t d_lock;
       [96] const struct dentry_operations *d_op;
      [104] struct super_block *d_sb;
      [112] long unsigned int d_time;
      [120] void *d_fsdata;
      [128] struct list_head d_lru;
            union {
                struct list_head d_child;
                struct callback_head d_rcu;
      [144] } d_u;
      [160] struct list_head d_subdirs;
      [176] struct hlist_node d_alias;
    }
    SIZE: 192
    
    crash> struct dentry.d_inode
    struct dentry {
       [48] struct inode *d_inode;
    }
    

    3、查看内存中指定结构体的值,struct后跟指针地址

    crash> struct dentry ffff881fbdc02c80
    struct dentry {
      d_flags = 136, 
      d_seq = {
        sequence = 4
      }, 
      d_hash = {
        next = 0x0, 
        pprev = 0xffffc900031bd8a0
      }, 
      d_parent = 0xffff881fbdc02ec0, 
      d_name = {
        {
          {
            hash = 1819047278, 
            len = 4
          }, 
          hash_len = 18998916462
        }, 
        name = 0xffff881fbdc02cb8 "null"
      }, 
      d_inode = 0xffff881f9011f5d0, 
      d_iname = "null\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 
      d_count = 2974, 
      d_lock = {
        {
          rlock = {
            raw_lock = {
              {
                head_tail = 2290387076, 
                tickets = {
                  head = 34948, 
                  tail = 34948
                }
              }
            }
          }
        }
      }, 
      d_op = 0xffffffff815cce40, 
      d_sb = 0xffff881f9011e800, 
      d_time = 0, 
      d_fsdata = 0x0, 
      d_lru = {
        next = 0xffff881fbdc02d00, 
        prev = 0xffff881fbdc02d00
      }, 
      d_u = {
        d_child = {
          next = 0xffff881fbdc02dd0, 
          prev = 0xffff881fbdfe1f50
        }, 
        d_rcu = {
          next = 0xffff881fbdc02dd0, 
          func = 0xffff881fbdfe1f50
        }
      }, 
      d_subdirs = {
        next = 0xffff881fbdc02d20, 
        prev = 0xffff881fbdc02d20
      }, 
      d_alias = {
        next = 0x0, 
        pprev = 0xffff881f9011f6e8
      }
    }
    

    注:如果要查看二阶指针的值,可以通过rd命令需要先获取一级指针的值,然后再用struct 结构体名 + addr获取具体的值,比如:
    在这里插入图片描述
    下面将通过struct file**fd的地址,获取fd指针数组中各个file结构体成员地址(二阶指针存放的是file指针的地址,所以可以通过rd获取一级指针的地址;二阶指针+8,则指向下一个file结构体指针):
    在这里插入图片描述
    对比可以看出,这种方式获取的file指针跟files命令读取到的文件指针的值相同。

    13、p命令

    p命令可以用来打印出表达式或者变量的值

    crash> p jiffies
    jiffies = $7 = 4314305182
    crash>
    crash> p old_close_func
    old_close_func = $5 = (close_t) 0xffffffff811ffd60 <SyS_close>
    crash> p SyS_close
    SyS_close = $6 = 
     {long (long)} 0xffffffff811ffd60 <SyS_close>
    crash> sym SyS_close
    ffffffff811ffd60 (T) SyS_close /usr/src/debug/kernel-3.10.0-693.el7/linux-3.10.0-693.el7.x86_64/fs/open.c: 1113
    crash> 
    

    14、查看某个命令使用方法及使用示例

    使用help+某个命令,可以查看这个命令的使用方法及使用示例:
    比如我们想看struct命令如何使用,可以执行 help struct命令:

    crash> help struct
    
    NAME
      struct - structure contents
    
    SYNOPSIS
      struct struct_name[.member[,member]][-o][-l offset][-rfuxdp][address | symbol]
             [count | -c count]
    
    DESCRIPTION
      This command displays either a structure definition, or a formatted display
      of the contents of a structure at a specified address.  When no address is
      specified, the structure definition is shown along with the structure size.
      A structure member may be appended to the structure name in order to limit
      the scope of the data displayed to that particular member; when no address
      is specified, the member's offset and definition are shown.
    
        struct_name  name of a C-code structure used by the kernel.
            .member  name of a structure member; to display multiple members of a
                     structure, use a comma-separated list of members.
                 -o  show member offsets when displaying structure definitions; 
                     if used with an address or symbol argument, each member will
                     be preceded by its virtual address.
          -l offset  if the address argument is a pointer to a structure member that
                     is contained by the target data structure, typically a pointer
                     to an embedded list_head, the offset to the embedded member may
                     be entered in either of the following manners:
                       1. in "structure.member" format.
                       2. a number of bytes. 
                 -r  raw dump of structure data.
                 -f  address argument is a dumpfile offset.
                 -u  address argument is a user virtual address in the current
                     context.
                 -x  override default output format with hexadecimal format.
                 -d  override default output format with decimal format.
                 -p  if a structure member is a pointer value, show the member's
                     data type on the output line; and on the subsequent line(s),
                     dereference the pointer, display the pointer target's symbol
                     value in brackets if appropriate, and if possible, display the
                     target data; requires an address argument.
            address  hexadecimal address of a structure; if the address points
                     to an embedded list_head structure contained within the
                     target data structure, then the "-l" option must be used.
             symbol  symbolic reference to the address of a structure.
              count  count of structures to dump from an array of structures;
                     if used, this must be the last argument entered.
           -c count  "-c" is only required if "count" is not the last argument
                     entered or if a negative number is entered; if a negative
                     value is entered, the (positive) "count" structures that
                     lead up to and include the target structure will be displayed.
    
      Structure data, sizes, and member offsets are shown in the current output
      radix unless the -x or -d option is specified.
    

    再比如,想查看ps命令在crash工具中怎么使用,可以help ps查看:

    crash> help ps
    
    NAME
      ps - display process status information
    
    SYNOPSIS
      ps [-k|-u|-G][-s][-p|-c|-t|-l|-a|-g|-r] [pid | taskp | command] ...
    
    DESCRIPTION
      This command displays process status for selected, or all, processes
      in the system.  If no arguments are entered, the process data is
      is displayed for all processes.  Specific processes may be selected
      by using the following identifier formats:
    
           pid  a process PID.
         taskp  a hexadecimal task_struct pointer.
       command  a command name.  If a command name is made up of letters that
                are all numerical values, precede the name string with a "\".
     
      The process list may be further restricted by the following options:
    
            -k  restrict the output to only kernel threads.
            -u  restrict the output to only user tasks.
            -G  display only the thread group leader in a thread group.
     
      The process identifier types may be mixed.  For each task, the following
      items are displayed:
     
        1. the process PID.
        2. the parent process PID.
        3. the CPU number that the task ran on last.
        4. the task_struct address or the kernel stack pointer of the process.
           (see -s option below)
        5. the task state (RU, IN, UN, ZO, ST, TR, DE, SW).
        6. the percentage of physical memory being used by this task.
        7. the virtual address size of this task in kilobytes.
        8. the resident set size of this task in kilobytes.
        9. the command name.
     
      The default output shows the task_struct address of each process under a
      column titled "TASK".  This can be changed to show the kernel stack 
      pointer under a column titled "KSTACKP".
     
           -s  replace the TASK column with the KSTACKP column.
     
      On SMP machines, the active task on each CPU will be highlighted by an
      angle bracket (">") preceding its information.
     
      Alternatively, information regarding parent-child relationships,
      per-task time usage data, argument/environment data, thread groups,
      or resource limits may be displayed:
     
           -p  display the parental hierarchy of selected, or all, tasks.
    

    15、其它命令

    可以通过help查看到如下:
    在这里插入图片描述

    如:可以使用rd memory读取内存内容;
    struct命令显示结构体定义及指定地址的结构体内容;
    irq查看中断信息;
    vtop查看地址页表信息等等。

    三、写在最后

    如果我们确定是某个内核模块导致的问题,可以反汇编出该模块的源代码:

    objdump -S -D my_test_lkm.ko > lkm.S
    

    然后vim查看lkm.S文件,查看对应的源码,我们上面调试的bt信息中**[exception RIP: my_openat+36]**,也即是my_openat中偏移量为0x24的地方,如下图:
    在这里插入图片描述
    如果崩溃处对应有c代码的话,这样排查起来就简单多了。

    最后,可以关注我的微信公众号 大胖聊编程 ,一起交流学习,共同进步。

    参考资料:
    [1]: Red_Hat_Enterprise_Linux-7-Kernel_Administration_Guide-en-US 7.5. ANALYZING A CORE DUMP

    展开全文
  • linux内核报错自动重启After a kernel panic, it is impossible to remotely connect to the Linux server to reboot it by SSH. How to make the panic ... 内核崩溃后,无法通过SSH远程连接到Linux服务器以重新...
  • 内核崩溃捕获机制之kdump详解

    万次阅读 2019-02-12 16:17:24
    kdump 是一种先进的基于 kexec 的内核崩溃转储机制。当系统崩溃时,kdump 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用...
  • 在为wifi驱动添加新功能的时候,使用vmalloc和...出现如下错误导致内核崩溃。 问题原因: 在定时器函数中调用vfree,导致内核崩溃。改用kmalloc和kfree,问题解决。 根源: 在内核的中断函数中允许使用vma...
  • Centos 内核崩溃的修复

    千次阅读 2015-04-29 08:41:49
    Linux在不正常关机(通常是断电)的情况下最有可能引起的问题是HD挂不上或内核崩溃,而启动到一半显示整屏地址xxx错误的多半是内核崩溃了, 下面简单讲下如何修复.  重启linux主机(或vm),按Shift键,选择旧版本的...
  • 默认ubuntu12.04没有配置内核崩溃自动重启及转存,造成发生内核崩溃的时候,没有core dump文件去分析,并且卡死在内核崩溃界面,为了方便查找内核崩溃原因,需要将内核崩溃自动重启配置及内核转存配置起来,配置步骤...
  • Ubuntu 手动更新glibc导致内核崩溃(无法正常关机/开机启动失败) 问题:Ubuntu 手动更新glibc导致内核崩溃,无法正常关机,开机启动失败,开机界...
  • Linux开发者正在考虑使 用条形码展示内核崩溃(Kernel Panics/Oops)信息。目前如果发生了内核崩溃,屏幕上会展示一大堆文本信息,对于普通Linux终端用户来说,这些信息很难被存档起来。如果使 用条形码展示内核oops...
  • 开发内核模块时,个人认为kdump+crash是必备的工具,kdump用于在内核崩溃时生成转储文件(core文件),crash用来分析core文件,查看崩溃时的栈信息、调用信息、出错的执行路径等。  如果出错的位置是在内核函数中...
  • linux内核崩溃调试

    千次阅读 2019-06-25 10:33:08
    https://www.ibm.com/developerworks/cn/linux/l-cn-kdump4/index.html?ca=drs ... 用kdump 和 crash 工具分析内核的奔溃信息 当linux内核发生崩溃的时候,可以用kdump等方式...
  • kdump内核崩溃转储服务的使用

    万次阅读 2013-09-02 18:10:33
    内核崩溃转储服务的使用 在linux生涯中虽说内核崩溃出现的几率不大,但还是有的 简单的叙述一下kdump这个服务的工作原理和作用(摘自网络) dump 是一种的新的crash dump捕获机制,用来捕获kernel crash时候产生的...
  • 查看内核崩溃日志

    2021-05-26 15:07:50
    /proc/last_kmsg /sys/fs/pstore/console-ramoops
  • 模拟内核崩溃

    2017-03-02 12:43:15
    echo c >/proc/sysrq
  • 本文首先介绍了 crash 的基本概念和安装方法,其次详细介绍了如何使用 crash 工具分析内核崩溃转储文件,包括各种常用调试命令的使用方法,最后以几个实际工作中遇到的真实案例向读者展示了 crash 的强大功能。...
  • 内核崩溃kdump和crash分析工具

    万次阅读 2017-04-22 11:45:50
    1)、kdump是一种kernel crash dump的机制,它可以在内核crash时保存系统的内存信息用于后续的分析。kdump是基于kexec的。 2)、crash是一个用于交互式地分析正在运行的Linux系统或者kernel cr
  • linux kdump Kdump是获取崩溃的Linux内核转储的一种方法,但是要找到说明其用法和内部结构的文档可能会很困难。 在本文中,我将研究kdump使用的基础知识,并研究kdump / kexec内核实现的内部。 Kexec是Linux内核到...
  • linux 内核崩溃处理

    千次阅读 2014-01-19 17:26:57
    1.定位代码崩溃内核中还是xxx.ko cat /proc/kallsyms >1.txt c0034818 T __kmalloc ... c00082a8 t quiet_kernel /*最开始的是虚拟地址*/ ... bf000000 t $a [cdd] .. 由此可看代码崩溃在xxx.ko ...
  • 内核崩溃排查工具

    2015-11-06 20:51:40
    可以查看本次启动的内核信息。 注意,dmesg中的时间使用的是librt库中定义的CLOCK_MONOTONIC,使用时需要-lrt。 struct timespec abstime; clock_gettime(CLOCK_MONOTONIC, &abstime); //(int)abstime.tv_...
  • kdump 是获取崩溃的 Linux 内核转储的一种方法,但是想找到解释其使用和内部结构的文档可能有点困难。在本文中,我将研究 kdump 的基本使用方法,和 kdump/kexec 在内核中是如何实现。 kexec 是一个 Linux ...
  • 有时在Linux系统下使用串口时,在操作关闭时会遇到内核崩溃或者其他的一些问题。 经过研究发现很可能是数据未发送完成引起的,即在关闭的时候,串口还在忙碌状态导致了崩溃问题。 解决方法就是,等待串口完成操作...
  • kdump 是获取崩溃的 Linux 内核转储的一种方法,但是想找到解释其使用和内部结构的文档可能有点困难。在本文中,我将研究 kdump 的基本使用方法,和 kdump/kexec 在内核中是如何实现。 kexec 是一个 Linux 内核到...
  • 最近在回顾kdump内核崩溃转储技术,刚好可以整理下相关知识点,系统性地讲解下Kdump的部署过程以及原理。 kdump内核崩溃转储技术在处理linux内核遇到宕机等异常问题中,可以将其崩溃瞬间的内存映像(包括函数栈,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,447
精华内容 27,778
关键字:

内核崩溃