源码位置:http://people.redhat.com/anderson/
1.将dump文件合一: cat sysdump.core.* > dump.bin
2.到vendor/xxxx/open-source/tools/sysdump目录下找到crash命令
3.下载编译版本的符号表
4../crash -m phys_base=0x80000000 dump.bin vmlinux
在crash命令行下输入“log” 命令显示log,查看是否有堆栈打印出。
crash>
crash>
crash>
crash> p sprdbl
sprdbl = $16 = {
pwm_mode = dim_pwm,
pwm_index = 0,
bldev = 0xdf6b5000,
suspend = 0,
clk = 0x0,
sprd_early_suspend_desc = {
link = {
next = 0xde96115c,
prev = 0xc075fb14
},
level = 50,
suspend = 0xc0206af4 <sprd_backlight_earlysuspend>,
resume = 0xc0206cf8 <sprd_backlight_lateresume>
}
}
crash> struct backlight_device 0xdf6b5000
struct backlight_device {
props = {
brightness = 25,
max_brightness = 255,
power = 0,
fb_blank = 0,
type = BACKLIGHT_RAW,
state = 0
},
update_lock = {
count = {
counter = 1
},
wait_lock = {
{
rlock = {
raw_lock = {<No data fields>}
}
}
},
wait_list = {
next = 0xdf6b501c,
prev = 0xdf6b501c
}
},
ops_lock = {
count = {
counter = 1
},
wait_lock = {
{
rlock = {
raw_lock = {<No data fields>}
}
}
},
wait_list = {
next = 0xdf6b5028,
prev = 0xdf6b5028
}
},
ops = 0xc05254c8,
fb_notif = {
notifier_call = 0xc0206a28 <fb_notifier_callback>,
next = 0x0,
priority = 0
},
dev = {
parent = 0xc07583d8,
p = 0xdf6b3880,
kobj = {
name = 0xdf6b1f80 "sprd_backlight",
entry = {
next = 0xdf6b520c,
prev = 0xdf6b200c
},
parent = 0xdf6b1fc0,
kset = 0xdf429ac0,
ktype = 0xc0778a28,
sd = 0xdf6b60c0,
kref = {
refcount = {
counter = 3
}
},
state_initialized = 1,
state_in_sysfs = 1,
state_add_uevent_sent = 1,
state_remove_uevent_sent = 0,
uevent_suppress = 0
},
init_name = 0x0,
type = 0x0,
mutex = {
count = {
counter = 1
},
wait_lock = {
{
rlock = {
raw_lock = {<No data fields>}
}
}
},
wait_list = {
next = 0xdf6b5078,
prev = 0xdf6b5078
}
},
bus = 0x0,
driver = 0x0,
platform_data = 0x0,
power = {
power_state = {
event = 0
},
can_wakeup = 0,
async_suspend = 0,
is_prepared = false,
is_suspended = false,
ignore_children = false,
early_init = true,
lock = {
{
rlock = {
raw_lock = {<No data fields>}
}
}
},
entry = {
next = 0xdf6b5254,
prev = 0xdf6b2054
},
completion = {
done = 2147483647,
wait = {
lock = {
{
rlock = {
raw_lock = {<No data fields>}
}
}
},
task_list = {
next = 0xdf6b50a0,
prev = 0xdf6b50a0
}
}
},
wakeup = 0x0,
wakeup_path = false,
syscore = false,
suspend_timer = {
entry = {
next = 0x0,
prev = 0x0
},
expires = 0,
base = 0xc07cf2c0,
function = 0xc0249200 <pm_suspend_timer_fn>,
data = 3748352064,
slack = -1
},
timer_expires = 0,
work = {
data = {
counter = -32
},
entry = {
next = 0xdf6b50d4,
prev = 0xdf6b50d4
},
func = 0xc024a08c <pm_runtime_work>,
callback = 0
},
wait_queue = {
lock = {
{
rlock = {
raw_lock = {<No data fields>}
}
}
},
task_list = {
next = 0xdf6b50e4,
prev = 0xdf6b50e4
}
},
usage_count = {
counter = 0
},
child_count = {
counter = 0
},
disable_depth = 1,
idle_notification = 0,
request_pending = 0,
deferred_resume = 0,
run_wake = 0,
runtime_auto = 1,
no_callbacks = 0,
irq_safe = 0,
use_autosuspend = 0,
timer_autosuspends = 0,
memalloc_noio = 0,
request = RPM_REQ_NONE,
runtime_status = RPM_SUSPENDED,
runtime_error = 0,
autosuspend_delay = 0,
last_busy = 0,
active_jiffies = 0,
suspended_jiffies = 0,
accounting_timestamp = 4294937311,
subsys_data = 0x0,
qos = 0x0
},
pm_domain = 0x0,
dma_mask = 0x0,
coherent_dma_mask = 0,
dma_parms = 0x0,
dma_pools = {
next = 0xdf6b5134,
prev = 0xdf6b5134
},
dma_mem = 0x0,
archdata = {
dma_ops = 0x0
},
of_node = 0x0,
acpi_node = {<No data fields>},
devt = 0,
id = 0,
devres_lock = {
{
rlock = {
raw_lock = {<No data fields>}
}
}
},
devres_head = {
next = 0xdf6b5150,
prev = 0xdf6b5150
},
knode_class = {
n_klist = 0xdf42cb8c,
n_node = {
next = 0xdf42cb8c,
prev = 0xdf42cb8c
},
n_ref = {
refcount = {
counter = 1
}
}
},
class = 0xdf43bdc0,
groups = 0x0,
release = 0xc02068a0 <bl_device_release>,
iommu_group = 0x0
}
}
crash>
使用Crash工具分析Linux dump文件:http://www.linuxdiyf.com/linux/7891.html
如何使用crash工具分析Linux内核崩溃转储文件:http://www.linuxdiyf.com/linux/1179.html