日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

[转]使用DBX分析AIX 下的 CoreDump

發布時間:2023/12/20 ChatGpt 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]使用DBX分析AIX 下的 CoreDump 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

博主的新Blog地址http://www.brantchen.com
歡迎訪問:)
-----------------------------------------------------


最近工作涉及到分析core dump文件發現這個好帖就當仁不讓地轉到偶博客了O(∩_∩)O~


PS:

Where can you get dbx?
It is part of bos.adt.debug

# lslpp -w /usr/bin/dbx
File Fileset Type
-------------------------------------------
/usr/bin/dbx bos.adt.debug Symlink


以下轉自http://www.aixchina.net/?6141/viewspace-18882


I core dump 分析入門

AIX專家俱樂部E ?!CR8Z#S)[

環境變量設置

`#X`4\]9h|8]0

;Uy%D]6sQ.i9O0 可以通過 /etc/security/limits 文件對各用戶的基本配置參數包括 core 大小進行限制?;蛘咄ㄟ^ ulimit 更改當前環境下的 core 大小限制。AIX專家俱樂部vF?I9u:B1@]!HC

c\!v_J-r)r3U0 默認情況下應用進程生成 core dump 時都使用文件名 core。為了避免同一工作目錄下的進程 core 相互覆蓋可以定義環境變量 CORE_NAMING=true然后啟動進程這樣將生成名為 core.pid.ddhhmmss 的文件??梢允褂?file core 命令查看 core 是哪個進程產生的。

:EvFu#O@$n*s)g0AIX專家俱樂部0U(p#k2_:J/} G"v$D.E

默認情況下應用進程 dump 時會包含所有的共享內存如果 dump 時想排除共享內存內容可以在啟動進程之前設置環境變量 CORE_NOSHM=true.

R1I rjg0

9kkS%v!@6o0 系統有一個參數 fullcore 用于控制是否在程序 coredump 時生成完整的 core。為避免信息丟失建議打開 fullcore??梢允褂?lsattr –El sys0 查詢是否將 fullcore 打開使用 chdev -l sys0 -a fullcore=true 將 fullcore 狀態更改為打開。也可以在程序內部調用 sigaction 例程設置 fullcore參考如下測試程序AIX專家俱樂部~*Pp~3Qi


@4L3gNuy_0fullcore 設置示例 AIX專家俱樂部n4m4E,c/{ ewz


8g|9zx9Gv'F0//test.CAIX專家俱樂部5D@)bx*?)F
#include <iostream>AIX專家俱樂部?&Q'NC!rB*ox
#include <signal.h>
BY@esPG0AIX專家俱樂部nAZ4@gzd7{(K
int main(int argc, char* argv[])AIX專家俱樂部4s$Q0QY5j6N)?6Z,M/z
{
[-lfWBAL0 char str[10];AIX專家俱樂部J&Bo'CS5q
struct sigaction s;
azZqqo-oWO-f?0 s.sa_handler = SIG_DFL; AIX專家俱樂部t"?:[j h,jD
s.sa_mask.losigs = 0;
4L7nMMB#k lI0 s.sa_mask.hisigs = 0;
-C9fo RnP k%M(NN0 s.sa_flags = SA_FULLDUMP;AIX專家俱樂部4REO"xg
sigaction(SIGSEGV,&s,(struct sigaction *) NULL); AIX專家俱樂部5h`};avp
AIX專家俱樂部)?#dh%SE.H)v
std::cout << " input str!\n" << std::endl;AIX專家俱樂部sdR bJn
std::cin >> str;AIX專家俱樂部SHF2S-A8_q
return 0;
2{Cw\QTA0}AIX專家俱樂部+j+xYc-bM~

AIX專家俱樂部KQ0i.jDAE

#O&m+H2}*G0 尋找 core dump

}0v5Qh!fhZ0AIX專家俱樂部(lJ4QZdD)nEV

應用進程的 core 產生在其當前工作目錄下可以在應用程序內部使用 chdir 函數切換當前工作目錄。使用 procwdx 命令可以查看進程的當前工作目錄。系統的 core 生成在 lg_dumplv 下并在重啟時轉移到 /var/adm/ras/ 目錄下如果有足夠空間的話否則繼續保留在 lg_dumplv并隨時有可能被覆蓋。

@8o3`A/Y;N8JZQ*p0AIX專家俱樂部;?8z~Us9WaG

可以使用 errpt -a 查看標識 C0AA5338 SYSDUMP系統 core、B6048838 CORE_DUMP進程 core的詳細錯誤信息獲取生成 core 的進程以及 core 文件位置。使用 snap –ac 收集系統的 dump 信息。

QDCZo|#G6[0AIX專家俱樂部-[4`\s+jO%sL

core dump 信息收集 AIX專家俱樂部;} G!J,R-C_!@

+JR6c,p?-o5_?1}0 如果可能 , 直接在發生 coredump 的機器上用 dbx 分析出結果 , 這樣是最方便的分析方法 . 這種情況下注意不要直接以 root 用戶登錄然后用 dbx 分析 , 而必須在應用程序所屬的用戶下進行此操作 , 因為 core 可能需要依賴應用程序運行時對應環境下的某些庫 , 這樣就要借助應用程序的環境變量 .

xW2^wVZ%P8G;k)el0

1ApsXSv_0 如果需取回生產機上的 core 信息在實驗室分析 , 則需要搜集一些相關信息 . 進程 core 分析一般至少需要依賴應用可執行程序有時還需要包括一些運行時動態庫信息。如果需要收集 core 相關的完整信息可運行 snapcore <core 路徑以及名稱 > < 可執行文件以及名稱 >例如 snapcore ./core ./a.out然后在 /tmp/snapcore 下取下相應的 .pax.Z 文件。AIX專家俱樂部 i'H+v,xpYU*f

:t,cu1A1qGZ]W s0 正常的收集過程應該如下 :

Y3l }JF8{},A"t+]p0
yWi*JU0snap core 收集過程 AIX專家俱樂部!E5_Wriw\

AIX專家俱樂部F)k;n`%q*U
# snapcore ./core ./a.out
7BO ?I8T7i,].\4J S~0Core file "./core" created by "a.out"
'qO,Q Vy0
'nc#nNd] |,c Zj5h0pass1() in progress ....
YMXw(sZY i0AIX專家俱樂部3F'F#eRq n"W%E&p#W
Calculating space required .AIX專家俱樂部*_vDLjZ!P?8ne
AIX專家俱樂部b kR(x&D
Total space required is 14130 kbytes ..
!}"u.o-BHu@SVH0
2lrX.Ol)Cq R0 Checking for available space ...AIX專家俱樂部4H^2e9_^0kGX?7i
AIX專家俱樂部{)hBo[ov~
Available space is 807572 kbytesAIX專家俱樂部)L%DFS(j

;{;ec+mci0pass1 complete.
bcfkhI:Z [J:iL"_N0
2| z)~X!P9X'C0pass2() in progress ....
'W7o$`!?'f[0
$@?6y;wCF0 Collecting fileset information .AIX專家俱樂部0Xl'p7\7`-d

7a!I`Yc0 Collecting error report of CORE_DUMP errors ..
"z}%c%MR0|s0AIX專家俱樂部0| _u5\2L_)\
Creating readme file ..AIX專家俱樂部O\c6`s$Z,d
AIX專家俱樂部R p#M.p$H;{He
Creating archive file ...
T3z4hK#u0AIX專家俱樂部)]/Bw y4K
Compressing archive file ....
NU:]'WLzw$z3\+p0
gab lD3}D'r3T0pass2 completed.
lXUP*Wd*T,?X0AIX專家俱樂部+{/HfVM
Snapcore completed successfully. Archive created in /tmp/snapcore.
"~Z5{,o3PW0
.WQZY8k0H0# cd /tmp/snapcoreAIX專家俱樂部mh]l*}\pN
# ls
:p,vX%uG%x0snapcore_352276.pax.ZAIX專家俱樂部)B3S.]9HJ+cv7r
# uncompress snapcore_352276.pax.ZAIX專家俱樂部2f{1^(Gk8?
# ls
w#G&E*A}$Y3g0snapcore_352276.pax
-Jjkw%nI:@0# pax -r -f snapcore_352276.paxAIX專家俱樂部l-`%uz{;\5s
# ls 注意需要保證有類似如下文件 ( 可執行文件/core/errpt/lslpp/usr 目錄等 ):
h s.v1? ncdC0README errpt.out usr
2_+H0N m/l]!k0a.out lslpp.out
,Db'O r9gX-C0core snapcore_352276.pax
R3Hd3O(?4Y4?0#
(w9ecg(yt;c4f0v0

AIX專家俱樂部+WQqW.{Kqh$MamH
AIX專家俱樂部G N8o5{8FNLK/^

II 使用 dbx 分析 core dump 的例子

X b]4?6Q7`xJ0

^4`!I$`C4h}0dbx 是 AIX 下基于命令行界面的源碼級調試工具。本文檔只提供一些基本的 dbx 分析指令詳細內容請參考“General Programming Concepts: Writing and Debugging Programs”關于 dbx 的描述。

WI1h_EHi0
t&k8QtJf g0 初步分析
j@ zf)aIQ0


7Zj2IP%Pw0#dbx <program name> core
4W7iacY+`M0

AIX專家俱樂部4~IP i6z^b;L1[9t

7?V\rA(c]0 示例AIX專家俱樂部a}8Z*mY3g"K

# dbx ./test coreAIX專家俱樂部5V}%c7uW
Type 'help' for help.AIX專家俱樂部:[&en`Ld
warning: The core file is not a fullcore. Some info may
+B R&Mj4|xW4GHD,D0not be available.AIX專家俱樂部%H3\Z&Di0TGS[s)if
[using memory p_w_picpath in core]AIX專家俱樂部:\s&n:b ^*RhX-b5zP
reading symbolic information ...warning: no source compiled with -g
,I"v0O.@Dz0AIX專家俱樂部0sle/jh6X j
Segmentation fault in raise at 0xd022e1e4AIX專家俱樂部|_`UU;R%V0nu
0xd022e1e4 (raise+0x40) 80410014 lwz r2,0x14(r1)AIX專家俱樂部vf3Nn"j y4@ Y


eSjTK@s}x\0

(S,NS6m,N)|+Q:@']0 顯示出 core 發生時當前進程執行到的位置-g 編譯的情況下能夠看到具體的行AIX專家俱樂部S1\U#F;~

(dbx) where
C'k%~-l/q:bL%@0raise(??) at 0xd022e1e4
-ELn8i9P1uA^O0main(0x1, 0x2ff22d48) at 0x100019c4AIX專家俱樂部be~+a!]|js


Bzutk(M3Z0

?)Z*EF*v'uD2w0 注意AIX專家俱樂部E;pL4@n/^ N}

j Xu fnH0 如果分析的是異地 core 文件需要采用 snapcore 收集相關 core 信息。對于依賴鏈接庫的情況注意需要增加 -p ldpath=newpath:... 重新設置鏈接庫路徑只有所有依賴的庫都已經被鏈接才能完整的復現 coredump 故障現場參考 dbx 的幫助文檔獲取更多信息。

f#E^p3L0

# cd /tmp/snapcore
Zs6lq6i0# dbx –p /=./ a.out core
F.cfX\!A"Y c0Type 'help' for help.
7R r c!M"[m6D0[using memory p_w_picpath in core]
Qt)]:Olur9h0reading symbolic information ...warning: no source compiled with -g
n8Dw.K/MEE)_+]^0
2C2wA5DvD8z1B0AIX專家俱樂部.zm`@'dV
IOT/Abort trap in raise at 0xd01f4f60
#S8Cb7vR+ov00xd01f4f60 (raise+0x40) 80410014 lwz r2,0x14(r1)
1k~'L1q7g0

AIX專家俱樂部~X9A#eai5~JD
AIX專家俱樂部CmLxj K?'C

列舉源碼信息

n(SJw%q0AIX專家俱樂部j,tX8J|7J

列舉程序源碼list需要在運行 dbx 命令時使用 -I 指明源碼搜索路徑并使用 -g 編譯或者匯編碼listiAIX專家俱樂部WKR/^L[

(dbx) listi mainAIX專家俱樂部e{w;a0t@jr
0x10001924 (main) 7c0802a6 mflr r0AIX專家俱樂部1v4]+mv0t;e0z
0x10001928 (main+0x4) bfa1fff4 stmw r29,-12(r1)AIX專家俱樂部Ptfef Y&_%~
0x1000192c (main+0x8) 90010008 stw r0,0x8(r1)
,l?0\'O[W00x10001930 (main+0xc) 9421ffa0 stwu r1,-96(r1)
%O0hcTw'n`(]00x10001934 (main+0x10) 83e20064 lwz r31,0x64(r2)
Zub)jG00x10001938 (main+0x14) 90610078 stw r3,0x78(r1)
m~W/~2`v2F\00x1000193c (main+0x18) 9081007c stw r4,0x7c(r1)AIX專家俱樂部?N\)K[9})L
0x10001940 (main+0x1c) 83a20068 lwz r29,0x68(r2)AIX專家俱樂部H)S;m)U6j%Xe-}

AIX專家俱樂部9H_nHN4@{$h9f;@ q

LGy!\^3cF0 列舉變量內容

hiD_Y0

y5dPjhL%H0 示例代碼AIX專家俱樂部)p}3mb|UW

#include <iostream>AIX專家俱樂部+w!k{o*]K
#include <signal.h>
%P-`.y5^8sW/K0int g_test =0;
!v9z&K b6G0AIX專家俱樂部'\(lE1h;Yl
int testfunc(int &para)AIX專家俱樂部*V!{"Yq:p3O]
{
d0p?uy;]`?!}0 para++;
8r?;`/p3|0 return 0;
Fu(l$ih$TO7ns_0}
!th]r K8O9I0
D|8u)Kg3WYyjcw0int main(int argc, char* argv[])AIX專家俱樂部'twW aJ)|&bf3O
{
KJ:wx:w!Hz$h0 struct sigaction s;AIX專家俱樂部 iHt|7w^0@ s$kL
s.sa_handler = SIG_DFL;AIX專家俱樂部fFeR,sb._4^
s.sa_mask.losigs = 0;AIX專家俱樂部A*g/E$P KbJ!y
s.sa_mask.hisigs = 0;AIX專家俱樂部'Xr&}?]:A_
s.sa_flags = SA_FULLDUMP;
E0^X;PL"{*w S0 sigaction(SIGSEGV,&s,(struct sigaction *) NULL);
:};f-e(O]T0
1Y9zl"o'YK0 char str[10];AIX專家俱樂部N$r2Ei2m
g_test =0;AIX專家俱樂部$Q:Hu9LW:x9U

:YVc)A8}&q&a"M0 testfunc(g_test);AIX專家俱樂部a#K9P"F Zb}
abort();AIX專家俱樂部eV]ba7_O
}AIX專家俱樂部0L @ Rg'E-XYH
# xlC test.C -g
MXmg7VeWAG B0


8kCR(V\ C"w:x0

!dcY2U Ew t-s!]0 以全局變量 g_test 舉例AIX專家俱樂部.nq"Z_g2\z.x

AIX專家俱樂部4vlgP2q/\`

#print g_test 顯示 g_test 的取值

F2k(P'c1M,T0

,q.CQ)z!mp6Z0#print sizeof(g_test) 顯示 g_test 的大小

.D(l!O^h3K0

spQ%bo(hN/[0#whatis g_test 顯示 g_test 的類型

'C? ` A#wB0

w3xsU%EP0#print &g_test 顯示 g_test 的地址 AIX專家俱樂部%do-c`tQx

AIX專家俱樂部y'TdrEc.vV,?

#&g_test/16x 顯示從 g_test 的地址開始處連續 16 個 WORD?byte的取值

WI:X2L2rH^avd`0

$d2[P~-mK9F!o0 如果沒有使用 -g 編譯則不能動態獲取 g_test 的類型、大小等信息但能夠得到 g_test 的地址并查詢該地址所在區域存儲空間的值。

.Q?EIz0

&yd ^{$n4z,l0 例如

!mSN6A[0

# ./a.out
H+y7\ z*jKy"C%s0IOT/Abort trap(coredump)
,kKE!u1\(u0# dbx ./a.out core
].}`,G!Uv-O,]DM r0Type 'help' for help.
g.Ec+v-NA#V!gD4N0[using memory p_w_picpath in core]
:cUyXnqjk$Qg4G&d0reading symbolic information ...
o)R E qc#^6y'dw)Pb0AIX專家俱樂部y}C0i:w7[5? rHN!D
IOT/Abort trap in raise at 0xd03365bc
F-h6]b;`00xd03365bc (raise+0x40) 80410014 lwz r2,0x14(r1)AIX專家俱樂部1E4J1jl;Tc$oe
(dbx) print g_testAIX專家俱樂部j8\Ac|&k
1AIX專家俱樂部E+C[ WK;T;s
(dbx) whatis g_test
p0N5um3n#LG8mBD0int g_test;AIX專家俱樂部4h Nv;mI+o
(dbx) print sizeof(g_test)
M2q:O:y'z(Di04
Y*f-n@Y&q'\E/c0(dbx) print &g_test
6fj,a~9iY.A00x20000428AIX專家俱樂部,a}7pqvI}Ju-Cc
(dbx) &g_test/16xAIX專家俱樂部:B%RCqxS
0x20000428: 0000 0001 0000 0000 0000 0000 0000 0000
E%U4JtR8x8G7b9aB00x20000438: 0000 0000 0000 0000 0000 0000 0000 0000
%Gv&G n%yNW_#}0


5j`5|R$m8c[~0
AIX專家俱樂部_4eN2zh^8|

列舉寄存器內容

-i*O(o;ig's0

&tl2k;|gLY2HAS9P0 列舉寄存器內容AIX專家俱樂部m yB7J!q5?H?'v4M

FHhdfiBn0(dbx) registers

m5F9{$l8W)h0

/KnTke2s0 如下模擬一個簡單的 core dump對 0 地址賦值引發 core dump 的問題AIX專家俱樂部N vHfwjTI M"a

# dbx ./a.out coreAIX專家俱樂部:A2gI@P_1}
Type 'help' for help.
P ~_2c.c!Y+?0warning: The core file is not a fullcore. Some info may
;L[*Ns%IL8m)r0not be available.AIX專家俱樂部P-}U8K2_!yT
[using memory p_w_picpath in core]AIX專家俱樂部Npa4p-I
reading symbolic information ...warning: no source compiled with -g
5y#X2FF#T0
)mws{?%k4V.Ivg!h0
U&n7O;X{z&xt0Segmentation fault in main at 0x10000348AIX專家俱樂部!X6rOTC
0x10000348 (main+0x18) 90640000 stw r3,0x0(r4)
$KQ7mEp^0(dbx) whereAIX專家俱樂部{)kZ[w]
main(0x1, 0x2ff22ccc) at 0x10000348AIX專家俱樂部-{fs;n:?z/T
(dbx) registers
iS%c m/m#u0 $r0:0x00000000 $stkp:0x2ff22bf0 $toc:0x20000414 $r3:0x00000012AIX專家俱樂部,|%NdIW*K*c&C
$r4:0x00000000 $r5:0x2ff22cd4 $r6:0xdeadbeef $r7:0x2ff22ff8
Q4n(j!{k+w'G6f `0 $r8:0x00000000 $r9:0x04030000 $r10:0xf0577538 $r11:0xdeadbeefAIX專家俱樂部"\yhh:K#PVN
$r12:0xdeadbeef $r13:0xdeadbeef $r14:0x00000001 $r15:0x2ff22cccAIX專家俱樂部d'q7Li@#z:^+y
$r16:0x2ff22cd4 $r17:0x00000000 $r18:0xdeadbeef $r19:0xdeadbeefAIX專家俱樂部+P*c(B+o8o/jyA@
$r20:0xdeadbeef $r21:0xdeadbeef $r22:0xdeadbeef $r23:0xdeadbeefAIX專家俱樂部K]2Zi9Ja9QJ
$r24:0xdeadbeef $r25:0xdeadbeef $r26:0xdeadbeef $r27:0xdeadbeef
9qOn6X0@O0F0 $r28:0xdeadbeef $r29:0xdeadbeef $r30:0xdeadbeef $r31:0xdeadbeef
['v,z0_,kJg0 $iar:0x10000348 $msr:0x0000d0b2 $cr:0x22282489 $link:0x100001b4AIX專家俱樂部d!`K-n:nD*e2df$Y7D
$ctr:0xdeadbeef $xer:0x20000020
%h0~ W"S2v-o'd0 Condition status = 0:e 1:e 2:e 3:l 4:e 5:g 6:l 7:lo
(w2f8YY:Y}0 [unset $noflregs to view floating point registers]
y |;|C[-@C0 [unset $novregs to view vector registers]AIX專家俱樂部,N#~_p5h
in main at 0x10000348AIX專家俱樂部n:ycbA-LWY:V
0x10000348 (main+0x18) 90640000 stw r3,0x0(r4)
I-p?$?6B8T&vBkq)a$z0L0(dbx) print $r3AIX專家俱樂部#? dJ5xv1WXU[!NX
0x00000012AIX專家俱樂部 cFe#Qv)|F
(dbx) print $r4
Nll"c;X1D)j^0(nil)
,NpL)kMc;PW0

AIX專家俱樂部G iOD3s-A3h

tmsr\/m9^;j/C0 這個例子比較簡單從最后匯編指令“stw r3,0x0(r4)”就可以簡單的看到程序 core dump 是因為向 0 地址0+r4存入 18r3 寄存器值造成。AIX專家俱樂部6e0o!S8zh n*Pd

AIX專家俱樂部]$ja$J3uf4a[}

查看多線程相關信息

3u{hPZ9Xp3f0

qk?&nPg]![0 如果以下環境變量采用默認的 OFF 值則系統會完全禁止適當的調試列表這意味著 dbx 命令將顯示不出任何對象

W#C:[hw[i\0AIX專家俱樂部!AV9AO^;l

AIXTHREAD_MUTEX_DEBUGAIX專家俱樂部-l)v N!d'[

3k3a%yx r5G0AIXTHREAD_COND_DEBUG

)V&cJd;^0AIX專家俱樂部b I;h0] x a!pu v

AIXTHREAD_RWLOCK_DEBUG

byit A4]z0AIX專家俱樂部(F\}F6Y\

可以使用

4t!m4D |6P@ KtbT0AIX專家俱樂部 |fv:W?Y1Pm#h

export AIXTHREAD_MUTEX_DEBUG=ON

L@]-r;f+n,v0

BFQ Ogg x@K0 打開 AIXTHREAD_MUTEX_DEBUG。AIX專家俱樂部$s.~A*DtZ

  • 查看線程信息 ?AIX專家俱樂部2s ug.Xl.| Rr1q}

    (dbx) print $t1 // 打印 t1 線程的基本信息

    SA!YS`+~}#]2V1Z0

    /}LJLhDHk+U0(dbx) attribute

    I"s{7j%S(AU0

    0P:Z+we5~%N9{0(dbx) condition

    W6}ZZUb0AIX專家俱樂部(MVV)^e`]3n

    (dbx) mutex

    V;M5m/hPX+eV#FO0AIX專家俱樂部Px DBH/W;X)I2]B

    (dbx) rwlockAIX專家俱樂部`[,vqG"wQQm

    AIX專家俱樂部0ZX3C;HW%p(]5C2bh |

    (dbx) thread

    lL I}{G#A(wo0

    n"w:~xJ0 例如AIX專家俱樂部 AdU2x!Q{L

    AIX專家俱樂部B+d#Tur*X,_%q

    (thread_id = 1, state_u = 4, priority = 60, policy = other, attributes = 0x20001078)

    5^6W[v;u0


  • 切換當前線程默認當前線程為收到 core 觸發信號所在線程 AIX專家俱樂部$J[w^2oHqK

    (dbx) thread current [tid]

    0h8nIs|3fqOr(G0AIX專家俱樂部PQ)WDq;T$R

    例如> 表明 core dump 時的當前線程

    )^-H-|GaM*v-sh x0
    (dbx)thread
    J?-i.Z#[Z"F0 thread state-k wchan state-u k-tid mode held scope functionAIX專家俱樂部`3Ge}:s!l
    $t1 wait 0x31bbb558 running 10321 k no pro _ptrgl
    8[[[} PZ4FEUM0 $t2 wait 0x311fb958 running 6275 k no pro _ptrgl AIX專家俱樂部1lE4^0o-sU5l+|H
    >$t3 run running 6985 k no pro _p_nsleep
    8G|6w'b ]hj0 $t4 wait 0x31bbbb18 running 6571 k no pro _ptrgl AIX專家俱樂部&ODV5ch~\Q
    $t5 wait 0x311fb9d8 running 7999 k no pro _ptrgl AIX專家俱樂部fh4?hwm!o)r
    $t6 wait 0x31bf8f98 running 8257 k no pro _ptrgl AIX專家俱樂部-]T,G(v!@R'H%n*K
    $t7 wait 0x311fba18 running 8515 k no pro _ptrgl
    7ZR+X0_(F n PMq-r0 $t8 wait 0x311fb7d8 running 8773 k no pro _ptrgl AIX專家俱樂部Zp2_~me1lX v4v
    $t9 wait 0x311fbb18 running 9031 k no pro _ptrgl
    HSIKtIExA;VQ0 $t10 wait 0x311fb898 running 9547 k no pro _ptrgl
    #\O5i@mH0 $t11 wait 0x311fb818 running 9805 k no pro _ptrgl
    Ku5Hg+s,^N){0 $t12 wait 0x311fba58 running 10063 k no pro _ptrgl
    ]3{\oq4\0 $t13 wait 0x311fb8d8 running 10579 k no pro _ptrgl
    E,\GC-Rd1`%A0(dbx) thread current 3
    F.@3iq j^e0(dbx) where
    ;QR:?(wO6BX3I2um0_p_nsleep(??, ??) at 0xd005f740AIX專家俱樂部7s!FGl;_D6R&doE|
    raise.nsleep(??, ??) at 0xd022de3cAIX專家俱樂部 fR\lYvN)]C
    sleep(??) at 0xd0260344AIX專家俱樂部 T^2zm.J$Q
    helper(??) at 0x100005ac
    {+m8N'f p0(dbx) thread current 4
    ^U'PUT#p,NbH0warning: Thread is in kernel mode, not all registers can be accessed.
    ~n o2l"Z Y `0(dbx) where
    5xN.vqis:G0ptrgl._ptrgl() at 0xd020e470
    CKG"x8a2_(zuc+d0raise.nsleep(??, ??) at 0xd022de3cAIX專家俱樂部(DLk"@D
    raise.nsleep(??, ??) at 0xd022de3cAIX專家俱樂部WL:M-Tl6_+Sx
    sleep(??) at 0xd0260344
    1phE U"Q.~S0helper(??) at 0x100005acAIX專家俱樂部5y9^do&akH
    (dbx)
    gKhw0N.Sj0

    ifPoh0


AIX專家俱樂部5^L#Q!S)Q3XZsD'[

core dump 分析的局限性 AIX專家俱樂部;B ~*vti5?mk

AIX專家俱樂部5R6H.HI"KI

不要期待能依賴 core dump 分析解決所有的問題下面是一個簡單的模擬緩沖區溢出的例子在這個例子中由于緩沖區溢出覆蓋了調用棧信息從而完全丟失了定位依據AIX專家俱樂部nU'w#WNRF_S

root@/tmp#>xlC test.C -g -o test2AIX專家俱樂部d'Lb5a6Z;vu` zh2H
root@/tmp#>
j2lQB{ K'~5U0root@/tmp#>./testAIX專家俱樂部+h(O1@/cS1DUZ
input str!
+Z;mN-Ki3C9z)V0AIX專家俱樂部|I8q2[$A)|F.\-e.N!B
012345678901234567890123456789AIX專家俱樂部$i5l)v+P `{vD)`#}E
Segmentation fault(coredump)AIX專家俱樂部oU%LR)}
root@/tmp#>dbx ./test2 core
#O1sS1t6bAB0Type 'help' for help.
&Zl6I,j/JYy4e P0[using memory p_w_picpath in core]AIX專家俱樂部4h'I6|@i2[$B
reading symbolic information ...
v|?7Oj)^8Z0
SU:[U3?0Segmentation fault in test2. at 0x34353634
tHcs @t00x34353634 (???) warning: Unable to access address 0x34353634 from coreAIX專家俱樂部*`Z)K2D2Ajo$o
(dbx) where
&Hh(]/X:De/A.j2~(S0warning: Unable to access address 0x34353634 from core
U(Dc+{/^1u4Y+m0warning: Unable to access address 0x34353634 from core
A1E;P&C1x_0warning: Unable to access address 0x34353630 from coreAIX專家俱樂部3cF5fB"knnE&t
warning: Unable to access address 0x34353630 from core
hU)Y,Kb*K r0warning: Unable to access address 0x34353634 from core
[$e7W*C^%v'D9F0warning: Unable to access address 0x34353634 from coreAIX專家俱樂部.L&@O5K*m.z
warning: Unable to access address 0x34353630 from coreAIX專家俱樂部:G@k8Yn6IV
warning: Unable to access address 0x34353630 from coreAIX專家俱樂部D$sbO_!i c
warning: Unable to access address 0x34353634 from coreAIX專家俱樂部 @7[3EcG
warning: Unable to access address 0x36373841 from coreAIX專家俱樂部E Jc9] V?l
test2.() at 0x34353634
m-w#~U%S0m{#wIK0warning: Unable to access address 0x36373839 from coreAIX專家俱樂部)Kl#h*qG
warning: Unable to access address 0x36373839 from core
.@;b+b$dH\0(dbx)
D+Jtz-Auh0


"c8SSa!K8Lc/i0
D cpS'VAz9k ~q0

AIX專家俱樂部E-p6ffmOT6AU
AIX專家俱樂部3JT#H9BDoV z%B(Ot

LF]gB\N1v0

AIX專家俱樂部_%Cs?1m[5hN

4[QN%Z&Ho8o,{h0
AIX專家俱樂部*Ol5R.Y$|3oBh|

系統 dump 分析 AIX專家俱樂部]!R'VG-Gg}

AIX專家俱樂部)Zs1EWaQ`

環境變量設置

v"`!P5uw2gpc9c|oT({0

B$Bn^y8E,no0 可以通過“sysdumpdev –l”查看系統當前的 dump 配置信息

xR&y^YI0

root@/#>sysdumpdev -lAIX專家俱樂部[h/M]G/uEx9S"US
primary /dev/hd6AIX專家俱樂部d q"?6U^ N
secondary /dev/sysdumpnullAIX專家俱樂部 br9X4X Q+F
copy directory /var/adm/rasAIX專家俱樂部jq*L(n.M)b/Fa
forced copy flag TRUE
|R*iF T+@,l0always allow dump FALSE
H}1Umq0dump compression ON
B9u};zi;Q0L(d1~0

AIX專家俱樂部(sp*p QES
AIX專家俱樂部u&gB3{e6hL

注意舊版本的 AIX “always allow dump”可能默認為關閉為方便系統 crash 時問題定位建議打開可使用命令 sysdumpdev –K 或者使用 smitty -> System Environments-> Change / Show Characteristics of System Dump 菜單設置。

?H;V5T}7jdx7r3H0

;dJ6R%s$cb3W0sysdumpdev –L 獲得最近系統產生的 dump 的相關統計信息

W+q2J\/U4B/R0

#>sysdumpdev -L
AENZc"vw8Z @)j00453-039
z"L?\1Pu`0Device name: /dev/hd6AIX專家俱樂部v"@K$e;y3~G%\
Major device number: 10AIX專家俱樂部P$M4h%b2Z"tO
Minor device number: 2
\2WX5iT,^o0Size: 18885120 bytes
e&dxP&ZI$~i0Uncompressed Size: 113724523 bytesAIX專家俱樂部)S#?B1[2T]j3{)L)X
Date/Time: Sat Jul 21 14:20:22 BEIST 2007AIX專家俱樂部jpL&p'f
Dump status: 0
~f7o:Uj!}h@0dump completed successfullyAIX專家俱樂部+z)l#FqF4N0A?)F
Dump copy filename: /var/adm/ras/vmcore.2.Z
:C/L[MF v[A0

AIX專家俱樂部$l]u u}#ba-m)F2Tc%a
AIX專家俱樂部$|R:tY {X7|bm ]c

為保證系統出現 crash 時dump device 能夠保存下 dump 信息需要合理的配置 dump device 的大小可以使用 sysdumpdev –e 估計系統 dump 需要的空間。一般推薦的 dump device 值大小為 sysdumpdev –e 估計值的 1.5 倍。AIX專家俱樂部4@S;JD0pQ

i}#W!jdo0 環境變量設置

GvyD O/Lc*g0

-}D N,n \'o*FFN0 本文檔只提供一些基本的 dump 分析指令詳細內容請參考“KDB kernel debugger and kdb command ”。AIX專家俱樂部af[6r&LR+K

,^#Xl.q]0 初步分析 AIX專家俱樂部)wy8_LF

AIX專家俱樂部`5br.}h7_-Zl

kdb 對 dump 文件分析需要借助于產生 dump 的內核文件 /unix一般 snap –ac 會對此文件進行收集。初步命令如下AIX專家俱樂部C%F,@4o"IZA)G

AIX專家俱樂部mx\n+^#\nz$B C

#kdb ./dump ./unixAIX專家俱樂部(N"p;}~ Q%RUY

AIX專家俱樂部&WP:].I7t1j i5P

示例

,f"HI#N!sWu0

#kdb ./dump ./unixAIX專家俱樂部2Vr+j|/i
The specified kernel file is a 64-bit kernelAIX專家俱樂部nr;jx{x
./dump mapped from @ 700000000000000 to @ 70000007da53bd5AIX專家俱樂部"Sa5@Wt
Preserving 1317350 bytes of symbol table
;Y5~C-I&|%o t%K q0First symbol __mulh
N;v8qBA,Jy(ir0Component Names:
i!A!FX%`[ nR0 1) minidump [2 entries]AIX專家俱樂部0iXD/j'mE.if
2) dmp_minimal [9 entries]AIX專家俱樂部.RG"Ofs3jce5BJ'd-G
3) proc [481 entries]AIX專家俱樂部QzK*x5e'A&@G\m
4) thrd [1539 entries]AIX專家俱樂部;T7F,L5E:R!~!h6g
5) rasct [1 entries]AIX專家俱樂部'[,}M!Z6N2@h*t
6) ldr [2 entries]
!TW5s/Z F"M.k0 7) errlg [3 entries]AIX專家俱樂部hI|d9zBz4J
8) mtrc [26 entries]AIX專家俱樂部1PUt7} iC!tS+G
9) lfs [1 entries]
m5dI)[/f g;s6e010) bos [2 entries]AIX專家俱樂部$h&|z0D7o_/n@2@ Y HH
11) ipc [7 entries]
id;uyu'lMh012) vmm [13 entries]
2^)jM.fq&z \'o013) alloc_kheap [256 entries]
/B/bzJx:|qpm%H014) alloc_other [26 entries]
y#\8jIG015) rtastrc [8 entries]AIX專家俱樂部*{ZG nK0jV
16) efcdd [20 entries]AIX專家俱樂部d*UcP|jxKU
17) eidedd [1 entries]
&FK j3Yy*{018) sisraid [2 entries]AIX專家俱樂部FB(hu+m)]#k4F
19) aixpcm [5 entries]
][8TGE)H8{020) scdisk [11 entries]AIX專家俱樂部 n2vqC/N
21) lvm [2 entries]
z?n;fIS%^022) jfs2 [1 entries]
M~:dRq Zt*e"L023) tty [4 entries]
`~A)Tj:|(X Z024) netstat [10 entries]
UbI8D6K%qHi025) goent_dd [7 entries]
)Z7HQB6^S026) scsidisk [11 entries]
ws5{J8g)WJV027) efscsi [5 entries]AIX專家俱樂部 Yn2_yBh
28) dump_statistics [1 entries]AIX專家俱樂部4\)DGuB
Component Dump Table has 2456 entries
-Q+NZ}| }8R(xv0 START END <name>
%y5ep7QJq[00000000000001000 0000000003BBA050 start+000FD8AIX專家俱樂部;Rq0aEf$@[6r
F00000002FF47600 F00000002FFDC920 __ublock+000000
vC&]COm3aw+l0000000002FF22FF4 000000002FF22FF8 environ+000000AIX專家俱樂部T ~G*P(_~X8s:d F"VQ
000000002FF22FF8 000000002FF22FFC errno+000000
7z+J0cEt$I@0F100070F00000000 F100070F10000000 pvproc+000000AIX專家俱樂部DS+t2j5\g
F100070F10000000 F100070F18000000 pvthread+000000AIX專家俱樂部eD*@-VKft4v.uif
PFT:AIX專家俱樂部7M1g*X/U-c
PVT:AIX專家俱樂部T7g3fS4kp
id....................0002
/CT.Yd\?F0raddr.....0000000000686000 eaddr.....F200800030000000
`*lH_i2K#eob`0size..............00040000 align.............00001000
S/|r#h$OS)J0valid..1 ros....0 fixlmb.1 seg....0 wimg...2AIX專家俱樂部"X Bp4e"g
Dump analysis on CHRP_SMP_PCI POWER_PC POWER_5 machine with 8 available CPU(s)
2^"Fb.b-N\3M0(64-bit registers)AIX專家俱樂部l8|.B)J/hh
Processing symbol table...AIX專家俱樂部Ih[&hbjY'}Q{:O4k
.......................done
#KRzn7B9^VI+h0


Z$HIN-xSG*U7H1Q0

1i+q5|$YM0 分析命令示例 AIX專家俱樂部 @k!v&q0db(r{"T3o

3q`h$}f0status 查看各個 CPU 在 dump 時正在運行的進程如AIX專家俱樂部.T].Kd!\(dS#QWr

0)> statusAIX專家俱樂部(hJ8Y?3v"^`s
CPU TID TSLOT PID PSLOT PROC_NAMEAIX專家俱樂部-b.e_ vd(E[+e~b(V
0 2580F5 600 14C0F6 332 cronAIX專家俱樂部*EXY,BCRn
1 12025 18 D01A 13 waitAIX專家俱樂部%b G U e+N
2 1020BB 258 1580C6 344 exprAIX專家俱樂部~"X X#?$]O~5|o1?6C
3 1502B 21 F01E 15 wait
J'N,TgX s*yj \#z0


V'`2l]^9Ns~#_4GY0

F!x?R-OzU3? hn0cpu <id> 命令切換當前 CPU默認的當前 CPU 為 cpu0AIX專家俱樂部&~G!E)zR}&C.]

AIX專家俱樂部 XCIID"ZW

(0)> cpu 1AIX專家俱樂部.{6t5vO B

AIX專家俱樂部sL'bFDV6m#U%P

(1)>AIX專家俱樂部rr3p*p$d3y!D

AIX專家俱樂部i3[$jr,WU:~`

打印系統的基本狀態和相關信息

\3En/eaT0AIX專家俱樂部8LD+t'O1BY&]1C1s

(0)> statAIX專家俱樂部$OlV-k`4bm

AIX專家俱樂部\1Y~R6OU%x

打印系統 dump 時內核棧的情況AIX專家俱樂部O lYG%H,y4z7tD

AIX專家俱樂部!Ki5bg5q;PpB

(0)> fAIX專家俱樂部n(U"K5~M

_SFk,U*P&C0lke 用來列出內核代碼對應的相關系統文件信息AIX專家俱樂部*Y"~._kc'c3~

AIX專家俱樂部 k*}f;@7r)dn$V

(0)> lke 003DE9CC

tT,~WY {\[0AIX專家俱樂部HL(wm#X}-V"JG

顯示系統 dump 時最后所在的指令

][ wT1P#sB;jQ,J0

,wBx7[XR0(0)> dr iarAIX專家俱樂部6L1y)Z~|

AIX專家俱樂部$N0K$uv#P6`9]3vo:F8JE

顯示虛擬存儲管理的日志信息其中 Exception value 若為 0000001C 則表示 pagingspace 耗盡

|!o;qb_e0y%G0

uET1ZfhE;b-S H0(0)> vmlogAIX專家俱樂部HTQpw

{${0^oY4k0 顯示進程表的信息AIX專家俱樂部pJbo8czJ

AIX專家俱樂部sX;w,\2]FvM)y3Qc

(0)> proc

(DKP ^0B!\;Z$F0

LSJ&lb-Ah0 顯示線程表的信息AIX專家俱樂部_H _uV\o

AIX專家俱樂部J\"B'IHG`%Ip'o)a

(0)> th

'AN`JLD0

S-o*ox8iGT0 顯示系統的 errpt 信息AIX專家俱樂部Abq2e?NoG*xq4O7Q

AIX專家俱樂部0Wt0Q&b }ck!E

(0)> errptAIX專家俱樂部G?)@:A~q.XK

ERRORS NOT READ BY ERRDEMON (ORDERED CHRONOLOGICALLY):
_AHK8C D$Z!F0
A3j*vO?b$qoM;O0Error Record:
TNR*I.u;TS0erec_flags .............. 1AIX專家俱樂部4e8d4?\pm#x
erec_len ................ 54AIX專家俱樂部iSDKoh,y
erec_timestamp .......... 46DCDD9DAIX專家俱樂部+y,k}U:I;I
erec_rec_len ............ 34
0Z9X7d*sX2rF7_(sS0erec_dupcount ........... 0AIX專家俱樂部7J6{TY$[xa
erec_duptime1 ........... 0AIX專家俱樂部 c'E2p?8Zk'[Q7Q6~0g~Y
erec_duptime2 ........... 0
{#aLhSW9J$O+f0erec_rec.error_id ....... DD11B4AFAIX專家俱樂部.M\@y:Qw
erec_rec.resource_name .. SYSPROCAIX專家俱樂部y-z(]X1BZ
00007FFF FFFFD000 00000000 003DE9CC .............=..

,[]l7Gw!x000000000 00020000 80000000 000290B2 ................

-----------------------------------------------------
博主的新Blog地址http://www.brantchen.com
歡迎訪問:)




轉載于:https://blog.51cto.com/brantc/386824

總結

以上是生活随笔為你收集整理的[转]使用DBX分析AIX 下的 CoreDump的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。