使用DBX分析AIX下的 CoreDump.docx

上传人:b****9 文档编号:26108199 上传时间:2023-06-17 格式:DOCX 页数:25 大小:29.24KB
下载 相关 举报
使用DBX分析AIX下的 CoreDump.docx_第1页
第1页 / 共25页
使用DBX分析AIX下的 CoreDump.docx_第2页
第2页 / 共25页
使用DBX分析AIX下的 CoreDump.docx_第3页
第3页 / 共25页
使用DBX分析AIX下的 CoreDump.docx_第4页
第4页 / 共25页
使用DBX分析AIX下的 CoreDump.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

使用DBX分析AIX下的 CoreDump.docx

《使用DBX分析AIX下的 CoreDump.docx》由会员分享,可在线阅读,更多相关《使用DBX分析AIX下的 CoreDump.docx(25页珍藏版)》请在冰豆网上搜索。

使用DBX分析AIX下的 CoreDump.docx

使用DBX分析AIX下的CoreDump

使用DBX分析AIX下的CoreDump

PS:

Wherecanyougetdbx?

Itispartofbos.adt.debug

#lslpp-w/usr/bin/dbx

FileFilesetType

-------------------------------------------

/usr/bin/dbxbos.adt.debugSymlink

以下转自

Icoredump分析入门

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默认情况下应用进程生成coredump时都使用文件名core。

为了避免同一工作目录下的进程core相互覆盖可以定义环境变量CORE_NAMING=true然后启动进程这样将生成名为core.pid.ddhhmmss的文件。

可以使用filecore命令查看core是哪个进程产生的。

:

EvFu#O@$n*s)g0AIX专家俱乐部0U(p#k2_:

J/}G"v$D.E

默认情况下应用进程dump时会包含所有的共享内存如果dump时想排除共享内存内容可以在启动进程之前设置环境变量CORE_NOSHM=true.

R1Irjg0

9kkS%v!

@6o0系统有一个参数fullcore用于控制是否在程序coredump时生成完整的core。

为避免信息丢失建议打开fullcore。

可以使用lsattr–Elsys0查询是否将fullcore打开使用chdev-lsys0-afullcore=true将fullcore状态更改为打开。

也可以在程序内部调用sigaction例程设置fullcore参考如下测试程序AIX专家俱乐部~*Pp~3Qi

@4L3gNuy_0fullcore设置示例AIX专家俱乐部n4m4E,c/{ewz

8g|9zx9Gv'F0//test.CAIX专家俱乐部5D@)bx*?

)F

#includeAIX专家俱乐部?

&Q'NC!

rB*ox

#include

BY@esPG0AIX专家俱乐部nAZ4@gzd7{(K

intmain(intargc,char*argv[])AIX专家俱乐部4s$Q0QY5j6N)?

6Z,M/z

{

[-lfWBAL0charstr[10];AIX专家俱乐部J&Bo'CS5q

structsigactions;

azZqqo-oWO-f?

0s.sa_handler=SIG_DFL;AIX专家俱乐部t"?

:

[jh,jD

s.sa_mask.losigs=0;

4L7nMMB#klI0s.sa_mask.hisigs=0;

-C9foRnPk%M(NN0s.sa_flags=SA_FULLDUMP;AIX专家俱乐部4REO"xg

sigaction(SIGSEGV,&s,(structsigaction*)NULL);AIX专家俱乐部5h`};avp

AIX专家俱乐部)?

#dh%SE.H)v

std:

:

cout<<"inputstr!

\n"<

:

endl;AIX专家俱乐部sdRbJn

std:

:

cin>>str;AIX专家俱乐部SHF2S-A8_q

return0;

2{Cw\QTA0}AIX专家俱乐部+j+xYc-bM~

AIX专家俱乐部KQ0i.jDAE

#O&m+H2}*G0寻找coredump

}0v5Qh!

fhZ0AIX专家俱乐部(lJ4QZdD)nEV

应用进程的core产生在其当前工作目录下可以在应用程序内部使用chdir函数切换当前工作目录。

使用procwdx命令可以查看进程的当前工作目录。

系统的core生成在lg_dumplv下并在重启时转移到/var/adm/ras/目录下如果有足够空间的话否则继续保留在lg_dumplv并随时有可能被覆盖。

@8o3`A/Y;N8JZQ*p0AIX专家俱乐部;?

8z~Us9WaG

可以使用errpt-a查看标识C0AA5338SYSDUMP系统core、B6048838CORE_DUMP进程core的详细错误信息获取生成core的进程以及core文件位置。

使用snap–ac收集系统的dump信息。

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

coredump信息收集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<可执行文件以及名称>例如snapcore./core./a.out然后在/tmp/snapcore下取下相应的.pax.Z文件。

AIX专家俱乐部i'H+v,xpYU*f

:

t,cu1A1qGZ]Ws0正常的收集过程应该如下:

Y3l}JF8{},A"t+]p0

yWi*JU0snapcore收集过程AIX专家俱乐部!

E5_Wriw\

AIX专家俱乐部F)k;n`%q*U

#snapcore./core./a.out

7BO?

I8T7i,].\4JS~0Corefile"./core"createdby"a.out"

'qO,QVy0

'nc#nNd]|,cZj5h0pass1()inprogress....

YMXw(sZYi0AIX专家俱乐部3F'F#eRqn"W%E&p#W

Calculatingspacerequired.AIX专家俱乐部*_vDLjZ!

P?

8ne

AIX专家俱乐部bkR(x&D

Totalspacerequiredis14130kbytes..

!

}"u.o-BHu@SVH0

2lrX.Ol)CqR0Checkingforavailablespace...AIX专家俱乐部4H^2e9_^0kGX?

7i

AIX专家俱乐部{)hBo[ov~

Availablespaceis807572kbytesAIX专家俱乐部)L%DFS(j

;{;ec+mci0pass1complete.

bcfkhI:

Z[J:

iL"_N0

2|z)~X!

P9X'C0pass2()inprogress....

'W7o$`!

?

'f[0

$@?

6y;wCF0Collectingfilesetinformation.AIX专家俱乐部0Xl'p7\7`-d

7a!

I`Yc0CollectingerrorreportofCORE_DUMPerrors..

"z}%c%MR0|s0AIX专家俱乐部0|_u5\2L_)\

Creatingreadmefile..AIX专家俱乐部O\c6`s$Z,d

AIX专家俱乐部Rp#M.p$H;{He

Creatingarchivefile...

T3z4hK#u0AIX专家俱乐部)]/Bwy4K

Compressingarchivefile....

NU:

]'WLzw$z3\+p0

gablD3}D'r3T0pass2completed.

lXUP*Wd*T,?

X0AIX专家俱乐部+{/HfVM

Snapcorecompletedsuccessfully.Archivecreatedin/tmp/snapcore.

"~Z5{,o3PW0

.WQZY8k0H0#cd/tmp/snapcoreAIX专家俱乐部mh]l*}\pN

#ls

:

p,vX%uG%x0snapcore_352276.pax.ZAIX专家俱乐部)B3S.]9HJ+cv7r

#uncompresssnapcore_352276.pax.ZAIX专家俱乐部2f{1^(Gk8?

#ls

w#G&E*A}$Y3g0snapcore_352276.pax

-Jjkw%nI:

@0#pax-r-fsnapcore_352276.paxAIX专家俱乐部l-`%uz{;\5s

#ls注意需要保证有类似如下文件(可执行文件/core/errpt/lslpp/usr目录等):

hs.v1?

ncdC0READMEerrpt.outusr

2_+H0Nm/l]!

k0a.outlslpp.out

Db'Or9gX-C0coresnapcore_352276.pax

R3Hd3O(?

4Y4?

0#

(w9ecg(yt;c4f0v0

AIX专家俱乐部+WQqW.{Kqh$MamH

AIX专家俱乐部GN8o5{8FNLK/^

II使用dbx分析coredump的例子

Xb]4?

6Q7`xJ0

^4`!

I$`C4h}0dbx是AIX下基于命令行界面的源码级调试工具。

本文档只提供一些基本的dbx分析指令详细内容请参考“GeneralProgrammingConcepts:

WritingandDebuggingPrograms”关于dbx的描述。

WI1h_EHi0

t&k8QtJfg0初步分析

j@zf)aIQ0

7Zj2IP%Pw0#dbxcore

4W7iacY+`M0

AIX专家俱乐部4~IPi6z^b;L1[9t

7?

V\rA(c]0示例AIX专家俱乐部a}8Z*mY3g"K

#dbx./testcoreAIX专家俱乐部5V}%c7uW

Type'help'forhelp.AIX专家俱乐部:

[&en`Ld

warning:

Thecorefileisnotafullcore.Someinfomay

+BR&Mj4|xW4GHD,D0notbeavailable.AIX专家俱乐部%H3\Z&Di0TGS[s)if

[usingmemoryimageincore]AIX专家俱乐部:

\s&n:

b^*RhX-b5zP

readingsymbolicinformation...warning:

nosourcecompiledwith-g

I"v0O.@Dz0AIX专家俱乐部0sle/jh6Xj

Segmentationfaultinraiseat0xd022e1e4AIX专家俱乐部|_`UU;R%V0nu

0xd022e1e4(raise+0x40)80410014lwzr2,0x14(r1)AIX专家俱乐部vf3Nn"jy4@Y

eSjTK@s}x\0

(S,NS6m,N)|+Q:

@']0显示出core发生时当前进程执行到的位置-g编译的情况下能够看到具体的行AIX专家俱乐部S1\U#F;~

(dbx)where

C'k%~-l/q:

bL%@0raise(?

?

)at0xd022e1e4

-ELn8i9P1uA^O0main(0x1,0x2ff22d48)at0x100019c4AIX专家俱乐部be~+a!

]|js

Bzutk(M3Z0

?

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

jXufnH0如果分析的是异地core文件需要采用snapcore收集相关core信息。

对于依赖链接库的情况注意需要增加-pldpath=newpath:

...重新设置链接库路径只有所有依赖的库都已经被链接才能完整的复现coredump故障现场参考dbx的帮助文档获取更多信息。

f#E^p3L0

#cd/tmp/snapcore

Zs6lq6i0#dbx–p/=./a.outcore

F.cfX\!

A"Yc0Type'help'forhelp.

7Rrc!

M"[m6D0[usingmemoryimageincore]

Qt)]:

Olur9h0readingsymbolicinformation...warning:

nosourcecompiledwith-g

n8Dw.K/MEE)_+]^0

2C2wA5DvD8z1B0AIX专家俱乐部.zm`@'dV

IOT/Aborttrapinraiseat0xd01f4f60

#S8Cb7vR+ov00xd01f4f60(raise+0x40)80410014lwzr2,0x14(r1)

1k~'L1q7g0

AIX专家俱乐部~X9A#eai5~JD

AIX专家俱乐部CmLxjK?

'C

列举源码信息

n(SJw%q0AIX专家俱乐部j,tX8J|7J

列举程序源码list需要在运行dbx命令时使用-I指明源码搜索路径并使用-g编译或者汇编码listiAIX专家俱乐部WKR/^L[

(dbx)listimainAIX专家俱乐部e{w;a0t@jr

0x10001924(main)7c0802a6mflrr0AIX专家俱乐部1v4]+mv0t;e0z

0x10001928(main+0x4)bfa1fff4stmwr29,-12(r1)AIX专家俱乐部PtfefY&_%~

0x1000192c(main+0x8)90010008stwr0,0x8(r1)

l?

0\'O[W00x10001930(main+0xc)9421ffa0stwur1,-96(r1)

%O0hcTw'n`(]00x10001934(main+0x10)83e20064lwzr31,0x64(r2)

Zub)jG00x10001938(main+0x14)90610078stwr3,0x78(r1)

m~W/~2`v2F\00x1000193c(main+0x18)9081007cstwr4,0x7c(r1)AIX专家俱乐部?

N\)K[9})L

0x10001940(main+0x1c)83a20068lwzr29,0x68(r2)AIX专家俱乐部H)S;m)U6j%Xe-}

AIX专家俱乐部9H_nHN4@{$h9f;@q

LGy!

\^3cF0列举变量内容

hiD_Y0

y5dPjhL%H0示例代码AIX专家俱乐部)p}3mb|UW

#includeAIX专家俱乐部+w!

k{o*]K

#include

%P-`.y5^8sW/K0intg_test=0;

!

v9z&Kb6G0AIX专家俱乐部'\(lE1h;Yl

inttestfunc(int¶)AIX专家俱乐部*V!

{"Yq:

p3O]

{

d0p?

uy;]`?

!

}0para++;

8r?

;`/p3|0return0;

Fu(l$ih$TO7ns_0}

!

th]rK8O9I0

D|8u)Kg3WYyjcw0intmain(intargc,char*argv[])AIX专家俱乐部'twWaJ)|&bf3O

{

KJ:

wx:

w!

Hz$h0structsigactions;AIX专家俱乐部iHt|7w^0@s$kL

s.sa_handler=SIG_DFL;AIX专家俱乐部fFeR,sb._4^

s.sa_mask.losigs=0;AIX专家俱乐部A*g/E$PKbJ!

y

s.sa_mask.hisigs=0;AIX专家俱乐部'Xr&}?

]:

A_

s.sa_flags=SA_FULLDUMP;

E0^X;PL"{*wS0sigaction(SIGSEGV,&s,(structsigaction*)NULL);

:

};f-e(O]T0

1Y9zl"o'YK0charstr[10];AIX专家俱乐部N$r2Ei2m

g_test=0;AIX专家俱乐部$Q:

Hu9LW:

x9U

:

YVc)A8}&q&a"M0testfunc(g_test);AIX专家俱乐部a#K9P"FZb}

abort();AIX专家俱乐部eV]ba7_O

}AIX专家俱乐部0L@Rg'E-XYH

#xlCtest.C-g

MXmg7VeWAGB0

8kCR(V\C"w:

x0

!

dcY2UEwt-s!

]0以全局变量g_test举例AIX专家俱乐部.nq"Z_g2\z.x

AIX专家俱乐部4vlgP2q/\`

#printg_test显示g_test的取值

F2k(P'c1M,T0

q.CQ)z!

mp6Z0#printsizeof(g_test)显示g_test的大小

.D(l!

O^h3K0

spQ%bo(hN/[0#whatisg_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/Aborttrap(coredump)

kKE!

u1\(u0#dbx./a.outcore

].}`,G!

Uv-O,]DMr0Type'help'forhelp.

g.Ec+v-NA#V!

gD4N0[usingmemoryimageincore]

:

cUyXnqjk$Qg4G&d0readingsymbolicinformation...

o)REqc#^6y'dw)Pb0AIX专家俱乐部y}C0i:

w7[5?

rHN!

D

IOT/Aborttrapinraiseat0xd03365bc

F-h6]b;`00xd03365bc(raise+0x40)80410014lwzr2,0x14(r1)AIX专家俱乐部1E4J1jl;Tc$oe

(dbx)printg_testAIX专家俱乐部j8\Ac|&k

1AIX专家俱乐部E+C[WK;T;s

(dbx)whatisg_test

p0N5um3n#LG8mBD0intg_test;AIX专家俱乐部4hNv;mI+o

(dbx)printsizeof(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:

00000001000000000000000000000000

E%U4JtR8x8G7b9aB00x20000438:

00000000000000000000000000000000

%Gv&Gn%yNW_#}0

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

列举寄存器内容

-i*O(o;ig's0

&tl2k;|gLY2HAS9P0列举寄存器内容AIX专家俱乐部myB7J!

q5?

H?

'v4M

FHhdfiBn0(dbx)registers

m5F9{$l8W)h0

/KnTke2s0如下模拟一个简单的coredump对0地址赋值引发coredump的问题AIX专家俱乐部NvHfwjTIM"a

#dbx./a.outcoreAIX专家俱乐部:

A2gI@P_1}

Type'help'forhelp.

P~_2c.c!

Y+?

0warning:

Thecorefileisnotafullcore.Someinfomay

;L[*Ns%IL8m)r0notbeavailable.AIX专家俱乐部P-}U8K2_!

yT

[usingmemoryimageincore]AIX专家俱乐部Npa4p-I

readingsymbolicinformation...warning:

nosourcecompiledwith-g

5y#X2FF#T0

)mws{?

%k4V.Ivg!

h0

U&n7O;X{z&xt0Segmentationfaultinmainat0x10000348AIX专家俱乐部!

X6rOTC

0x10000348(main+0x18)90640000stwr3,0x0(r4)

$KQ7mEp^0(dbx)whereAIX专家俱乐部{)kZ[w]

main(0x1,0x2ff22ccc)at0x10000348AIX专家俱乐部-{fs;n:

?

z/T

(dbx)registers

iS%cm/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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1