首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

AIX 下的 core dump 分析入门-4

AIX 下的 core dump 分析入门-4

系统 dump 分析  环境变量设置  可以通过“sysdumpdev –l”查看系统当前的 dump 配置信息:
1
2
3
4
5
6
7
root@/#>sysdumpdev -l
primary /dev/hd6
secondary /dev/sysdumpnull
copy directory /var/adm/ras
forced copy flag TRUE
always allow dump FALSE
dump compression ON




注意旧版本的 AIX “always allow dump”可能默认为关闭;为方便系统 crash 时问题定位,建议打开,可使用命令 sysdumpdev –K 或者使用 smitty -> System Environments-> Change / Show Characteristics of System Dump 菜单设置。
sysdumpdev –L 获得最近系统产生的 dump 的相关统计信息:
1
2
3
4
5
6
7
8
9
10
11
#>sysdumpdev -L
0453-039
Device name: /dev/hd6
Major device number: 10
Minor device number: 2
Size: 18885120 bytes
Uncompressed Size: 113724523 bytes
Date/Time: Sat Jul 21 14:20:22 BEIST 2007
Dump status: 0
dump completed successfully
Dump copy filename: /var/adm/ras/vmcore.2.Z




为保证系统出现 crash 时,dump device 能够保存下 dump 信息,需要合理的配置 dump device 的大小,可以使用 sysdumpdev –e 估计系统 dump 需要的空间。一般推荐的 dump device 值大小为 sysdumpdev –e 估计值的 1.5 倍。
环境变量设置  本文档只提供一些基本的 dump 分析指令,详细内容请参考“KDB kernel debugger and kdb command ”。
初步分析
kdb 对 dump 文件分析需要借助于产生 dump 的内核文件 /unix,一般 snap –ac 会对此文件进行收集。初步命令如下:
#kdb ./dump ./unix
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#kdb ./dump ./unix
The specified kernel file is a 64-bit kernel
./dump mapped from @ 700000000000000 to @ 70000007da53bd5
Preserving 1317350 bytes of symbol table
First symbol __mulh
Component Names:
1) minidump [2 entries]
2) dmp_minimal [9 entries]
3) proc [481 entries]
4) thrd [1539 entries]
5) rasct [1 entries]
6) ldr [2 entries]
7) errlg [3 entries]
8) mtrc [26 entries]
9) lfs [1 entries]
10) bos [2 entries]
11) ipc [7 entries]
12) vmm [13 entries]
13) alloc_kheap [256 entries]
14) alloc_other [26 entries]
15) rtastrc [8 entries]
16) efcdd [20 entries]
17) eidedd [1 entries]
18) sisraid [2 entries]
19) aixpcm [5 entries]
20) scdisk [11 entries]
21) lvm [2 entries]
22) jfs2 [1 entries]
23) tty [4 entries]
24) netstat [10 entries]
25) goent_dd [7 entries]
26) scsidisk [11 entries]
27) efscsi [5 entries]
28) dump_statistics [1 entries]
Component Dump Table has 2456 entries
START END <name>
0000000000001000 0000000003BBA050 start+000FD8
F00000002FF47600 F00000002FFDC920 __ublock+000000
000000002FF22FF4 000000002FF22FF8 environ+000000
000000002FF22FF8 000000002FF22FFC errno+000000
F100070F00000000 F100070F10000000 pvproc+000000
F100070F10000000 F100070F18000000 pvthread+000000
PFT:
PVT:
id....................0002
raddr.....0000000000686000 eaddr.....F200800030000000
size..............00040000 align.............00001000
valid..1 ros....0 fixlmb.1 seg....0 wimg...2
Dump analysis on CHRP_SMP_PCI POWER_PC POWER_5 machine with 8 available CPU(s)
(64-bit registers)
Processing symbol table...
.......................done




分析命令示例
status 查看各个 CPU 在 dump 时正在运行的进程,如:
1
2
3
4
5
6
0)> status
CPU TID TSLOT PID PSLOT PROC_NAME
0 2580F5 600 14C0F6 332 cron
1 12025 18 D01A 13 wait
2 1020BB 258 1580C6 344 expr
3 1502B 21 F01E 15 wait




cpu <id> 命令切换当前 CPU,默认的当前 CPU 为 cpu0:
(0)> cpu 1
(1)>
打印系统的基本状态和相关信息:
(0)> stat
打印系统 dump 时内核栈的情况:
(0)> f
lke 用来列出内核代码对应的相关系统文件信息:
(0)> lke 003DE9CC
显示系统 dump 时最后所在的指令:
(0)> dr iar
显示虚拟存储管理的日志信息;其中 Exception value 若为 0000001C 则表示 pagingspace 耗尽:
(0)> vmlog
显示进程表的信息:
(0)> proc
显示线程表的信息:
(0)> th
显示系统的 errpt 信息:
(0)> errpt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ERRORS NOT READ BY ERRDEMON (ORDERED CHRONOLOGICALLY):

Error Record:
erec_flags .............. 1
erec_len ................ 54
erec_timestamp .......... 46DCDD9D
erec_rec_len ............ 34
erec_dupcount ........... 0
erec_duptime1 ........... 0
erec_duptime2 ........... 0
erec_rec.error_id ....... DD11B4AF
erec_rec.resource_name .. SYSPROC
00007FFF FFFFD000 00000000 003DE9CC .............=..
00000000 00020000 80000000 000290B2 ................




总结  本文简单介绍了 core dump 相关的背景知识以及 AIX 上调试 core dump 的一些基本方法。通过阅读这篇文章,希望您能对 AIX 下 core dump 机制有所了解,并能够借助 core dump 定位基本的系统以及应用程序问题。
返回列表