Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

7.6. 코어 덤프 분석

시스템 충돌의 원인을 확인하려면 다음을 사용하십시오. crash GDB(GNU Debugger)와 매우 유사한 대화형 프롬프트를 제공하는 유틸리티. 이 유틸리티를 사용하면 netdump,diskdump,xendump 또는 kdump 로 생성된 코어 덤프뿐만 아니라 실행 중인 Linux 시스템을 대화형으로 분석할 수 있습니다.

7.6.1. 크래시 유틸리티 설치

설치 방법 crash 도구를 분석하고 쉘 프롬프트에서 루트로 다음 명령을 실행합니다.

yum install crash

기타 등등 (In addition to crash또한 설치해야합니다. kernel-debuginfo 덤프 분석에 필요한 데이터를 제공하는 실행 중인 커널에 해당하는 패키지입니다. 설치 방법 kernel-debuginfo debuginfo-install 명령을 root 로 사용합니다.

debuginfo-install kernel

Red Hat Enterprise Linux에 새 패키지를 설치하는 방법에 대한 자세한 내용은. Yum 패키지 관리자, 참조 Red Hat Enterprise Linux 7 System Administrator’s Guide.

7.6.2. 크래시 유틸리티 실행

유틸리티를 시작하려면 쉘 프롬프트에서 다음 양식에 명령을 입력합니다.

crash /usr/lib/debug/lib/modules/<kernel>/vmlinux \ /var/crash/<timestamp>/vmcore

kdump 에서 캡처한 것과 동일한 & lt;kernel> 버전을 사용합니다. 현재 실행 중인 커널을 확인하려면 uname -r 명령을 사용합니다.

예 7.2. 크래시 유틸리티 실행

~]# crash /usr/lib/debug/lib/modules/2.6.32-69.el6.i686/vmlinux \
/var/crash/127.0.0.1-2010-08-25-08:45:02/vmcore

crash 5.0.0-23.el6
Copyright (C) 2002-2010  Red Hat, Inc.
Copyright (C) 2004, 2005, 2006  IBM Corporation
Copyright (C) 1999-2006  Hewlett-Packard Co
Copyright (C) 2005, 2006  Fujitsu Limited
Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
Copyright (C) 2005  NEC Corporation
Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions.  Enter "help copying" to see the conditions.
This program has absolutely no warranty.  Enter "help warranty" for details.

GNU gdb (GDB) 7.0
Copyright (C) 2009 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 "i686-pc-linux-gnu"...

      KERNEL: /usr/lib/debug/lib/modules/2.6.32-69.el6.i686/vmlinux
    DUMPFILE: /var/crash/127.0.0.1-2010-08-25-08:45:02/vmcore  [PARTIAL DUMP]
        CPUS: 4
        DATE: Wed Aug 25 08:44:47 2010
      UPTIME: 00:09:02
LOAD AVERAGE: 0.00, 0.01, 0.00
       TASKS: 140
    NODENAME: hp-dl320g5-02.lab.bos.redhat.com
     RELEASE: 2.6.32-69.el6.i686
     VERSION: #1 SMP Tue Aug 24 10:31:45 EDT 2010
     MACHINE: i686  (2394 Mhz)
      MEMORY: 8 GB
       PANIC: "Oops: 0002 [#1] SMP " (check log for details)
         PID: 5591
     COMMAND: "bash"
        TASK: f196d560  [THREAD_INFO: ef4da000]
         CPU: 2
       STATE: TASK_RUNNING (PANIC)

crash>

7.6.3. 메시지 버퍼 표시

커널 메시지 버퍼를 표시하려면 대화형 프롬프트에서 log 명령을 입력합니다.

예 7.3. 커널 메시지 버퍼 표시

crash> log
... several lines omitted ...
EIP: 0060:[<c068124f>] EFLAGS: 00010096 CPU: 2
EIP is at sysrq_handle_crash+0xf/0x20
EAX: 00000063 EBX: 00000063 ECX: c09e1c8c EDX: 00000000
ESI: c0a09ca0 EDI: 00000286 EBP: 00000000 ESP: ef4dbf24
 DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Process bash (pid: 5591, ti=ef4da000 task=f196d560 task.ti=ef4da000)
Stack:
 c068146b c0960891 c0968653 00000003 00000000 00000002 efade5c0 c06814d0
<0> fffffffb c068150f b7776000 f2600c40 c0569ec4 ef4dbf9c 00000002 b7776000
<0> efade5c0 00000002 b7776000 c0569e60 c051de50 ef4dbf9c f196d560 ef4dbfb4
Call Trace:
 [<c068146b>] ? __handle_sysrq+0xfb/0x160
 [<c06814d0>] ? write_sysrq_trigger+0x0/0x50
 [<c068150f>] ? write_sysrq_trigger+0x3f/0x50
 [<c0569ec4>] ? proc_reg_write+0x64/0xa0
 [<c0569e60>] ? proc_reg_write+0x0/0xa0
 [<c051de50>] ? vfs_write+0xa0/0x190
 [<c051e8d1>] ? sys_write+0x41/0x70
 [<c0409adc>] ? syscall_call+0x7/0xb
Code: a0 c0 01 0f b6 41 03 19 d2 f7 d2 83 e2 03 83 e0 cf c1 e2 04 09 d0 88 41 03 f3 c3 90 c7 05 c8 1b 9e c0 01 00 00 00 0f ae f8 89 f6 <c6> 05 00 00 00 00 01 c3 89 f6 8d bc 27 00 00 00 00 8d 50 d0 83
EIP: [<c068124f>] sysrq_handle_crash+0xf/0x20 SS:ESP 0068:ef4dbf24
CR2: 0000000000000000

명령 사용법에 대한 자세한 내용은 도움말 로그 를 입력합니다.

참고

커널 메시지 버퍼에는 시스템 충돌에 대한 가장 중요한 정보가 포함되어 있으므로 항상 vmcore-dmesg.txt 파일에서 먼저 덤프됩니다. 이는 예를 들어 대상 위치의 공간이 부족하여 전체 vmcore 파일을 가져오려고 할 때 유용합니다. 기본적으로 vmcore-dmesg.txt/var/crash/ 디렉터리에 있습니다.

7.6.4. 역추적 표시

커널 스택 추적을 표시하려면 대화형 프롬프트에서 bt 명령을 입력합니다. bt < pid> 를 사용하여 단일 프로세스의 역추적을 표시할 수 있습니다.

예 7.4. 커널 스택 추적 표시

crash> bt
PID: 5591   TASK: f196d560  CPU: 2   COMMAND: "bash"
 #0 [ef4dbdcc] crash_kexec at c0494922
 #1 [ef4dbe20] oops_end at c080e402
 #2 [ef4dbe34] no_context at c043089d
 #3 [ef4dbe58] bad_area at c0430b26
 #4 [ef4dbe6c] do_page_fault at c080fb9b
 #5 [ef4dbee4] error_code (via page_fault) at c080d809
    EAX: 00000063  EBX: 00000063  ECX: c09e1c8c  EDX: 00000000  EBP: 00000000
    DS:  007b      ESI: c0a09ca0  ES:  007b      EDI: 00000286  GS:  00e0
    CS:  0060      EIP: c068124f  ERR: ffffffff  EFLAGS: 00010096
 #6 [ef4dbf18] sysrq_handle_crash at c068124f
 #7 [ef4dbf24] __handle_sysrq at c0681469
 #8 [ef4dbf48] write_sysrq_trigger at c068150a
 #9 [ef4dbf54] proc_reg_write at c0569ec2
#10 [ef4dbf74] vfs_write at c051de4e
#11 [ef4dbf94] sys_write at c051e8cc
#12 [ef4dbfb0] system_call at c0409ad5
    EAX: ffffffda  EBX: 00000001  ECX: b7776000  EDX: 00000002
    DS:  007b      ESI: 00000002  ES:  007b      EDI: b7776000
    SS:  007b      ESP: bfcb2088  EBP: bfcb20b4  GS:  0033
    CS:  0073      EIP: 00edc416  ERR: 00000004  EFLAGS: 00000246

명령 사용법에 대한 자세한 내용은 help bt 를 입력합니다.

7.6.5. 프로세스 상태 표시

시스템의 프로세스 상태를 표시하려면 대화형 프롬프트에서 ps 명령을 입력합니다. ps < pid> 를 사용하여 단일 프로세스의 상태를 표시할 수 있습니다.

예 7.5. 시스템에 프로세스 상태 표시

crash> ps
   PID    PPID  CPU   TASK    ST  %MEM     VSZ    RSS  COMM
>     0      0   0  c09dc560  RU   0.0       0      0  [swapper]
>     0      0   1  f7072030  RU   0.0       0      0  [swapper]
      0      0   2  f70a3a90  RU   0.0       0      0  [swapper]
>     0      0   3  f70ac560  RU   0.0       0      0  [swapper]
      1      0   1  f705ba90  IN   0.0    2828   1424  init
... several lines omitted ...
   5566      1   1  f2592560  IN   0.0   12876    784  auditd
   5567      1   2  ef427560  IN   0.0   12876    784  auditd
   5587   5132   0  f196d030  IN   0.0   11064   3184  sshd
>  5591   5587   2  f196d560  RU   0.0    5084   1648  bash

명령 사용법에 대한 자세한 내용은 help ps 를 입력합니다.

7.6.6. 가상 메모리 정보 표시

기본 가상 메모리 정보를 표시하려면 대화형 프롬프트에서 vm 명령을 입력합니다. vm < pid> 를 사용하여 단일 프로세스에 정보를 표시할 수 있습니다.

예 7.6. 현재 컨텍스트의 가상 메모리 정보 표시

crash> vm
PID: 5591   TASK: f196d560  CPU: 2   COMMAND: "bash"
   MM       PGD      RSS    TOTAL_VM
f19b5900  ef9c6000  1648k    5084k
  VMA       START      END    FLAGS  FILE
f1bb0310    242000    260000 8000875  /lib/ld-2.12.so
f26af0b8    260000    261000 8100871  /lib/ld-2.12.so
efbc275c    261000    262000 8100873  /lib/ld-2.12.so
efbc2a18    268000    3ed000 8000075  /lib/libc-2.12.so
efbc23d8    3ed000    3ee000 8000070  /lib/libc-2.12.so
efbc2888    3ee000    3f0000 8100071  /lib/libc-2.12.so
efbc2cd4    3f0000    3f1000 8100073  /lib/libc-2.12.so
efbc243c    3f1000    3f4000 100073
efbc28ec    3f6000    3f9000 8000075  /lib/libdl-2.12.so
efbc2568    3f9000    3fa000 8100071  /lib/libdl-2.12.so
efbc2f2c    3fa000    3fb000 8100073  /lib/libdl-2.12.so
f26af888    7e6000    7fc000 8000075  /lib/libtinfo.so.5.7
f26aff2c    7fc000    7ff000 8100073  /lib/libtinfo.so.5.7
efbc211c    d83000    d8f000 8000075  /lib/libnss_files-2.12.so
efbc2504    d8f000    d90000 8100071  /lib/libnss_files-2.12.so
efbc2950    d90000    d91000 8100073  /lib/libnss_files-2.12.so
f26afe00    edc000    edd000 4040075
f1bb0a18   8047000   8118000 8001875  /bin/bash
f1bb01e4   8118000   811d000 8101873  /bin/bash
f1bb0c70   811d000   8122000 100073
f26afae0   9fd9000   9ffa000 100073
... several lines omitted ...

명령 사용법에 대한 자세한 내용은 help vm 를 입력합니다.

7.6.7. 열려 있는 파일 표시

열려 있는 파일에 대한 정보를 표시하려면 대화형 프롬프트에서 files 명령을 입력합니다. < pid>파일을 사용하여 선택한 하나의 프로세스에서 열린 파일을 표시할 수 있습니다.

예 7.7. 현재 컨텍스트의 열려 있는 파일에 대한 정보 표시

crash> files
PID: 5591   TASK: f196d560  CPU: 2   COMMAND: "bash"
ROOT: /    CWD: /root
 FD    FILE     DENTRY    INODE    TYPE  PATH
  0  f734f640  eedc2c6c  eecd6048  CHR   /pts/0
  1  efade5c0  eee14090  f00431d4  REG   /proc/sysrq-trigger
  2  f734f640  eedc2c6c  eecd6048  CHR   /pts/0
 10  f734f640  eedc2c6c  eecd6048  CHR   /pts/0
255  f734f640  eedc2c6c  eecd6048  CHR   /pts/0

명령 사용법에 대한 자세한 내용은 도움말 파일을 입력합니다.

7.6.8. 유틸리티 종료

대화형 프롬프트를 종료하고 종료합니다. crashexit 또는 q 를 입력합니다.

예 7.8. 크래시 유틸리티 종료

crash> exit
~]#