「crashコマンドによるクラッシュダンプ調査」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
* crashコマンドによるクラシュダンプの解析
クラッシュダンプをデバッグするには、crashコマンドを使う。
Usage:
crash [-h [opt]][-v][-s][-i file][-d num] [-S] [mapfile] [namelist] [dumpfile]
:mapfile|シンボルのアドレスが記された以下にあるファイル。ダンプ取得時のカーネルがシンボル情報をもっていれば、nmコマンドで作れるらしい。
/boot/System.map-<カーネルバージョン>
:namelist|デバッグ情報付き(-gオプションでコンパイル)のカーネルのバイナリ(vmlinux)。kernel-debuginfoをインストールすると、以下に作成される。
/usr/lib/debug/lib/modules/<カーネルバージョン>/vmlinux
:dumpfile|クラッシュダンプ(vmcore)で、カーネルのパニック時などにデフォルトの設定なら以下に作成される。
/var/crash/YYYY-MM-DD-hh:mm/vmcore
というわけで、crashコマンドを使う前に、「kernel-debuginfo」パッケージをインストールする。CentOSだとRHEL用のrpmが以下にあるので、他に必要な「kernel-debuginfo-common」そこからダウンロードしてインストールした。
kernel-debuginfoをインストールするには、他にkernel-debuginfo-commonも必要なので、それもインストールする。
http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/i386/Debuginfo/
# rpm -ivh kernel-debuginfo-common-2.6.18-274.7.1.el5.i686.rpm
# rpm -ivh kernel-debuginfo-2.6.18-274.7.1.el5.i686.rpm
なお、RHELだと以下でインストールできるらしが、CentOSなので地道にダウンロードした。
でも、ダウンロード元がRedHatのサイトなので、以下でもOKかも。
# yum −enablerepo=¥*debuginfo install kernel-debuginfo.$(uname -m) crash
インストールが済むと、デバッグ情報を含んだカーネルが以下にできているので、それをcrashのnamelistに指定する。
$ ls -l /usr/lib/debug/lib/modules/2.6.18-274.7.1.el5/vmlinux
-rwxr-xr-x 1 root root 70916548 10月 18 01:29 vmlinux
クラッシュダンプの起動は以下のようにする。
# crash /boot/System.map-2.6.18-274.7.1.el5 \
/usr/lib/debug/lib/modules/2.6.18-274.7.1.el5/vmlinux \
/var/crash/2011-10-22-20\:08/vmcore
すると、以下のような表示のあとに「crash>」のプロンプトが出て、解析用のサブコマンドが入力できる。
・・・中略・・・
SYSTEM MAP: /boot/System.map-2.6.18-274.7.1.el5
DEBUG KERNEL: /usr/lib/debug/lib/modules/2.6.18-274.7.1.el5/vmlinux (2.6.18-274.7.1.el5)
DUMPFILE: vmcore
CPUS: 4
DATE: Sat Oct 22 10:16:57 2011
UPTIME: 00:06:41
LOAD AVERAGE: 0.21, 0.12, 0.05
TASKS: 194
NODENAME: localhost.localdomain
RELEASE: 2.6.18-274.7.1.el5
VERSION: #1 SMP Thu Oct 20 16:20:37 EDT 2011
MACHINE: i686 (2594 Mhz)
MEMORY: 1 GB
PANIC: "SysRq : Trigger a crashdump"
PID: 5948
COMMAND: "bash"
TASK: f7c5b000 [THREAD_INFO: dacdc000]
CPU: 2
STATE: TASK_RUNNING (SYSRQ)
crash> help
* files mod runq union
alias foreach mount search vm
ascii fuser net set vtop
bt gdb p sig waitq
btop help ps struct whatis
dev irq pte swap wr
dis kmem ptob sym q
eval list ptov sys
exit log rd task
extend mach repeat timer
crash> ps
PID PPID CPU TASK ST %MEM VSZ RSS COMM
> 0 0 0 c06903c0 RU 0.0 0 0 [swapper]
0 1 1 f7c32550 RU 0.0 0 0 [swapper]
・・・省略・・・
* crashコマンドによるクラシュダンプの解析
クラッシュダンプをデバッグするには、crashコマンドを使う。
Usage:
crash [-h [opt]][-v][-s][-i file][-d num] [-S] [mapfile] [namelist] [dumpfile]
:mapfile|シンボルのアドレスが記された以下にあるファイル。ダンプ取得時のカーネルがシンボル情報をもっていれば、nmコマンドで作れるらしい。
/boot/System.map-<カーネルバージョン>
:namelist|デバッグ情報付き(-gオプションでコンパイル)のカーネルのバイナリ(vmlinux)。kernel-debuginfoをインストールすると、以下に作成される。
/usr/lib/debug/lib/modules/<カーネルバージョン>/vmlinux
:dumpfile|クラッシュダンプ(vmcore)で、カーネルのパニック時などにデフォルトの設定なら以下に作成される。
/var/crash/YYYY-MM-DD-hh:mm/vmcore
というわけで、crashコマンドを使う前に、「kernel-debuginfo」パッケージをインストールする。CentOSだとRHEL用のrpmが以下にあるので、他に必要な「kernel-debuginfo-common」そこからダウンロードしてインストールした。
kernel-debuginfoをインストールするには、他にkernel-debuginfo-commonも必要なので、それもインストールする。
http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/i386/Debuginfo/
# rpm -ivh kernel-debuginfo-common-2.6.18-274.7.1.el5.i686.rpm
# rpm -ivh kernel-debuginfo-2.6.18-274.7.1.el5.i686.rpm
なお、RHELだと以下でインストールできるらしが、CentOSなので地道にダウンロードした。
でも、ダウンロード元がRedHatのサイトなので、以下でもOKかも。
# yum −enablerepo=¥*debuginfo install kernel-debuginfo.$(uname -m) crash
インストールが済むと、デバッグ情報を含んだカーネルが以下にできているので、それをcrashのnamelistに指定する。
$ ls -l /usr/lib/debug/lib/modules/2.6.18-274.7.1.el5/vmlinux
-rwxr-xr-x 1 root root 70916548 10月 18 01:29 vmlinux
クラッシュダンプの起動は以下のようにする。
# crash /boot/System.map-2.6.18-274.7.1.el5 \
/usr/lib/debug/lib/modules/2.6.18-274.7.1.el5/vmlinux \
/var/crash/2011-10-22-20\:08/vmcore
すると、以下のような表示のあとに「crash>」のプロンプトが出て、解析用のサブコマンドが入力できる。
・・・中略・・・
SYSTEM MAP: /boot/System.map-2.6.18-274.7.1.el5
DEBUG KERNEL: /usr/lib/debug/lib/modules/2.6.18-274.7.1.el5/vmlinux (2.6.18-274.7.1.el5)
DUMPFILE: vmcore
CPUS: 4
DATE: Sat Oct 22 10:16:57 2011
UPTIME: 00:06:41
LOAD AVERAGE: 0.21, 0.12, 0.05
TASKS: 194
NODENAME: localhost.localdomain
RELEASE: 2.6.18-274.7.1.el5
VERSION: #1 SMP Thu Oct 20 16:20:37 EDT 2011
MACHINE: i686 (2594 Mhz)
MEMORY: 1 GB
PANIC: "SysRq : Trigger a crashdump"
PID: 5948
COMMAND: "bash"
TASK: f7c5b000 [THREAD_INFO: dacdc000]
CPU: 2
STATE: TASK_RUNNING (SYSRQ)
crash> help
* files mod runq union
alias foreach mount search vm
ascii fuser net set vtop
bt gdb p sig waitq
btop help ps struct whatis
dev irq pte swap wr
dis kmem ptob sym q
eval list ptov sys
exit log rd task
extend mach repeat timer
crash> ps
PID PPID CPU TASK ST %MEM VSZ RSS COMM
> 0 0 0 c06903c0 RU 0.0 0 0 [swapper]
0 1 1 f7c32550 RU 0.0 0 0 [swapper]
・・・省略・・・
----
#comment()
----