----- Original Message -----
Hi ,
I have tried to use crash 4.1.0 in ubuntu 10.04 kernel (2.6.32.25),
when I don't specify the memory dump file ,it works perfectly as it
reads the memory from crash driver (crash model), it shows below:
root@o:/# crash /boot/System.map-2.6.32-25-generic
/home/amer/ubuntu-lucid/debian/build/build-generic/vmlinux
crash 4.1.0
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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 6.1
Copyright 2004 Free Software Foundation, Inc.
GDB 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.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
SYSTEM MAP: /boot/System.map-2.6.32-25-generic
DEBUG KERNEL: /home/amer/ubuntu-lucid/debian/build/build-generic/vmlinux
(2.6.32-25-generic)
DUMPFILE: /dev/crash
CPUS: 1
DATE: Wed Feb 23 11:40:40 2011
UPTIME: 09:17:34
LOAD AVERAGE: 0.89, 0.74, 0.78
TASKS: 258
NODENAME: o
RELEASE: 2.6.32-25-generic
VERSION: #45-Ubuntu SMP Sat Oct 16 19:48:22 UTC 2010
MACHINE: i686 (1339 Mhz)
MEMORY: 511.5 MB
PID: 2703
COMMAND: "crash"
TASK: cf27bfc0 [THREAD_INFO: dfbc0000]
CPU: 0
STATE: TASK_RUNNING (ACTIVE)
OK.
Note that you don't have to use the /boot/System.map-2.6.32-25-generic
file on the command line, presuming that the live kernel is actually running
that same /home/amer/ubuntu-lucid/debian/build/build-generic/vmlinux kernel.
but when I entered the dump file argument I got error (the memory
image is obtained from /dev/crash by dd tool), it shows below:
root@o:/# crash /boot/System.map- 2.6.32 -25-generic
/home/amer/ubuntu-lucid/debian/build/build-generic/vmlinux home/amer/image.dd
crash 4.1.0
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
crash: home/amer/image.dd: not a supported file format
Usage:
crash [-h [opt]][-v][-s][-i file][-d num] [-S] [mapfile] [namelist]
[dumpfile]
Enter "crash -h" for details.
could you please give some advice to resolve this problem.
Yes -- don't do that.
Running "dd /dev/crash > image.dd" just dumps a bunch of bytes into
the image.dd file. Dumpfiles by definition need some kind of bookkeeping
header in order for the crash utility to know where the contents of a
particular page are located in the dumpfile. Crash supports over
a dozen different dumpfile formats.
If you want to take a snapshot of your live system without crashing
it, you can try the "snap" extension module:
# cd <path-to>/crash-5.1.2
# make extensions
...
#
That will build the "snap.so" extension module (along with a few
others found in the crash-5.1.2/extensions subdirectory).
The run live -- note that normally you don't have to enter anything
on the command line if the debuginfo vmlinux file of the running
kernel is in a "known" location. I don't know how Ubuntu sets things
up, so it's possible that you at least need to enter the path to
your vmlinux file (and the System.map if that vmlinux file is different
from the running kernel).
Anyway, get a live session going, load the "snap.so" extension module,
and dump kernel memory into an ELF-style dumpfile. For example:
# crash
crash 5.1.2
Copyright (C) 2002-2011 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 "x86_64-unknown-linux-gnu"...
KERNEL: /usr/lib/debug/lib/modules/2.6.18-128.el5/vmlinux
DUMPFILE: /dev/crash
CPUS: 8
DATE: Thu Feb 24 09:21:24 2011
UPTIME: 37 days, 00:57:58
LOAD AVERAGE: 0.29, 0.38, 0.18
TASKS: 262
NODENAME:
crash.usersys.redhat.com
RELEASE: 2.6.18-128.el5
VERSION: #1 SMP Wed Dec 17 11:41:38 EST 2008
MACHINE: x86_64 (1995 Mhz)
MEMORY: 1 GB
PID: 27743
COMMAND: "crash"
TASK: ffff81002750a820 [THREAD_INFO: ffff81003db8c000]
CPU: 2
STATE: TASK_RUNNING (ACTIVE)
crash> extend snap.so
./extensions/snap.so: shared object loaded
crash> snap live.dump
live.dump: [100%]
-rw-r--r-- 1 root root 1071686392 Feb 24 09:18 live.dump
crash> q
#
Then use the "live.dump" dumpfile:
# crash /usr/lib/debug/lib/modules/2.6.18-128.el5/vmlinux live.dump
crash 5.1.2
Copyright (C) 2002-2011 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 "x86_64-unknown-linux-gnu"...
KERNEL: /usr/lib/debug/lib/modules/2.6.18-128.el5/vmlinux
DUMPFILE: live.dump
CPUS: 8
DATE: Thu Feb 24 09:18:13 2011
UPTIME: 37 days, 00:54:47
LOAD AVERAGE: 0.31, 0.11, 0.06
TASKS: 257
NODENAME:
crash.usersys.redhat.com
RELEASE: 2.6.18-128.el5
VERSION: #1 SMP Wed Dec 17 11:41:38 EST 2008
MACHINE: x86_64 (1995 Mhz)
MEMORY: 1 GB
PANIC: ""
PID: 27603
COMMAND: "crash"
TASK: ffff81001a57f100 [THREAD_INFO: ffff81001ad22000]
CPU: 2
STATE: TASK_RUNNING (PANIC)
crash>
You may see some command errors because the system is not frozen when
the dump is taken, so vital things may be changing while the memory is
being copied. For example, "bt" on the active tasks may show nonsensical
data, given that they were running when the memory was being copied.
Hope this helps,
Dave