ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:29.24KB ,
资源ID:26108199      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26108199.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(使用DBX分析AIX下的 CoreDump.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

使用DBX分析AIX下的 CoreDump.docx

1、使用DBX分析AIX下的 CoreDump使用DBX分析AIX 下的 CoreDumpPS:Where can you get dbx?It is part of bos.adt.debug# lslpp -w /usr/bin/dbxFile Fileset Type-/usr/bin/dbx bos.adt.debug Symlink以下转自I core dump 分析入门AIX专家俱乐部E ?!CR8Z#S)环境变量设置#X49h|80;Uy%D6sQ.i9O0 可以通过 /etc/security/limits 文件对各用户的基本配置参数包括 core 大小进行限制。或者通过 ulim

2、it 更改当前环境下的 core 大小限制。AIX专家俱乐部vF?I9u:B1!HCc!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/ Gv$D.E默认情况下应用进程 dump 时会包含所有的共享内存如果 dump 时想排除共享内存内容可以在启动进程

3、之前设置环境变量 CORE_NOSHM=true.R1I rjg09kkS%v!6o0 系统有一个参数 fullcore 用于控制是否在程序 coredump 时生成完整的 core。为避免信息丢失建议打开 fullcore。可以使用 lsattr El sys0 查询是否将 fullcore 打开使用 chdev -l sys0 -a fullcore=true 将 fullcore 状态更改为打开。也可以在程序内部调用 sigaction 例程设置 fullcore参考如下测试程序AIX专家俱乐部*Pp3Qi4L3gNuy_0fullcore 设置示例 AIX专家俱乐部n4m4E,c/ e

4、wz8g|9zx9GvF0/test.CAIX专家俱乐部5D)bx*?)F#include AIX专家俱乐部?&QNC!rB*ox#include BYesPG0AIX专家俱乐部nAZ4gzd7(Kint main(int argc, char* argv)AIX专家俱乐部4s$Q0QY5j6N)?6Z,M/z-lfWBAL0 char str10;AIX专家俱乐部J&BoCS5q struct sigaction s;azZqqo-oWO-f?0 s.sa_handler = SIG_DFL; AIX专家俱乐部t?:j h,jD s.sa_mask.losigs = 0;4L7nMMB#k

5、lI0 s.sa_mask.hisigs = 0;-C9fo RnP k%M(NN0 s.sa_flags = SA_FULLDUMP;AIX专家俱乐部4REOxg sigaction(SIGSEGV,&s,(struct sigaction *) NULL); AIX专家俱乐部5h;avpAIX专家俱乐部)?#dh%SE.H)v std:cout input str!n str;AIX专家俱乐部SHF2S-A8_q return 0;2CwQTA0AIX专家俱乐部+j+xYc-bMAIX专家俱乐部KQ0i.jDAE#O&m+H2*G0 寻找 core dump0v5Qh!fhZ0AIX专家俱

6、乐部(lJ4QZdD)nEV应用进程的 core 产生在其当前工作目录下可以在应用程序内部使用 chdir 函数切换当前工作目录。使用 procwdx 命令可以查看进程的当前工作目录。系统的 core 生成在 lg_dumplv 下并在重启时转移到 /var/adm/ras/ 目录下如果有足够空间的话否则继续保留在 lg_dumplv并随时有可能被覆盖。8o3A/Y;N8JZQ*p0AIX专家俱乐部;?8zUs9WaG可以使用 errpt -a 查看标识 C0AA5338 SYSDUMP系统 core、B6048838 CORE_DUMP进程 core的详细错误信息获取生成 core 的进程以

7、及 core 文件位置。使用 snap ac 收集系统的 dump 信息。QDCZo|#G60AIX专家俱乐部-4s+jO%sLcore dump 信息收集 AIX专家俱乐部; G!J,R-C_!+JR6c,p?-o5_?10 如果可能 , 直接在发生 coredump 的机器上用 dbx 分析出结果 , 这样是最方便的分析方法 . 这种情况下注意不要直接以 root 用户登录然后用 dbx 分析 , 而必须在应用程序所属的用户下进行此操作 , 因为 core 可能需要依赖应用程序运行时对应环境下的某些库 , 这样就要借助应用程序的环境变量 .xW2wVZ%P8G;k)el01ApsXSv_0

8、 如果需取回生产机上的 core 信息在实验室分析 , 则需要搜集一些相关信息 . 进程 core 分析一般至少需要依赖应用可执行程序有时还需要包括一些运行时动态库信息。如果需要收集 core 相关的完整信息可运行 snapcore 例如 snapcore ./core ./a.out然后在 /tmp/snapcore 下取下相应的 .pax.Z 文件。AIX专家俱乐部 iH+v,xpYU*f:t,cu1A1qGZW s0 正常的收集过程应该如下 :Y3l JF8,At+p0yWi*JU0snap core 收集过程 AIX专家俱乐部!E5_WriwAIX专家俱乐部F)k;n%q*U# sna

9、pcore ./core ./a.out7BO ?I8T7i,.4J S0Core file ./core created by a.outqO,Q Vy0nc#nNd |,c Zj5h0pass1() in progress .YMXw(sZY i0AIX专家俱乐部3FF#eRq nW%E&p#W Calculating space required .AIX专家俱乐部*_vDLjZ!P?8neAIX专家俱乐部b kR(x&D Total space required is 14130 kbytes .!u.o-BHuSVH02lrX.Ol)Cq R0 Checking for availa

10、ble space .AIX专家俱乐部4H2e9_0kGX?7iAIX专家俱乐部)hBoov Available space is 807572 kbytesAIX专家俱乐部)L%DFS(j;ec+mci0pass1 complete. bcfkhI:Z J:iL_N02| z)X!P9XC0pass2() in progress .W7o$!?f0$?6y;wCF0 Collecting fileset information .AIX专家俱乐部0Xlp77-d7a!IYc0 Collecting error report of CORE_DUMP errors .z%c%MR0|s0AIX

11、专家俱乐部0| _u52L_) Creating readme file .AIX专家俱乐部Oc6s$Z,dAIX专家俱乐部R p#M.p$H;He Creating archive file .T3z4hK#u0AIX专家俱乐部)/Bw y4K Compressing archive file .NU:WLzw$z3+p0gab lD3Dr3T0pass2 completed.lXUP*Wd*T,?X0AIX专家俱乐部+/HfVMSnapcore completed successfully. Archive created in /tmp/snapcore.Z5,o3PW0.WQZY8k0

12、H0# cd /tmp/snapcoreAIX专家俱乐部mhl*pN# ls:p,vX%uG%x0snapcore_352276.pax.ZAIX专家俱乐部)B3S.9HJ+cv7r# uncompress snapcore_352276.pax.ZAIX专家俱乐部2f1(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? ncdC

13、0README errpt.out usr2_+H0N m/l!k0a.out lslpp.out,DbO r9gX-C0core snapcore_352276.paxR3Hd3O(?4Y4?0#(w9ecg(yt;c4f0v0AIX专家俱乐部+WQqW.Kqh$MamHAIX专家俱乐部G N8o58FNLK/II 使用 dbx 分析 core dump 的例子X b4?6Q7xJ04!I$C4h0dbx 是 AIX 下基于命令行界面的源码级调试工具。本文档只提供一些基本的 dbx 分析指令详细内容请参考“General Programming Concepts: Writing and D

14、ebugging Programs”关于 dbx 的描述。WI1h_EHi0t&k8QtJf g0 初步分析 j zf)aIQ07Zj2IP%Pw0#dbx core4W7iacY+M0AIX专家俱乐部4IP i6zb;L19t7?VrA(c0 示例AIX专家俱乐部a8Z*mY3gK# dbx ./test coreAIX专家俱乐部5V%c7uWType help for help.AIX专家俱乐部:&enLdwarning: The core file is not a fullcore. Some info may+B R&Mj4|xW4GHD,D0not be available.AIX

15、专家俱乐部%H3Z&Di0TGSs)ifusing memory image in coreAIX专家俱乐部:s&n:b *RhX-b5zPreading symbolic information .warning: no source compiled with -g,Iv0O.Dz0AIX专家俱乐部0sle/jh6X jSegmentation fault in raise at 0xd022e1e4AIX专家俱乐部|_UU;R%V0nu0xd022e1e4 (raise+0x40) 80410014 lwz r2,0x14(r1)AIX专家俱乐部vf3Nnj y4 YeSjTKsx0(S

16、,NS6m,N)|+Q:0 显示出 core 发生时当前进程执行到的位置-g 编译的情况下能够看到具体的行AIX专家俱乐部S1U#F;(dbx) whereCk%-l/q:bL%0raise(?) at 0xd022e1e4-ELn8i9P1uAO0main(0x1, 0x2ff22d48) at 0x100019c4AIX专家俱乐部be+a!|jsBzutk(M3Z0?)Z*EF*vuD2w0 注意AIX专家俱乐部E;pL4n/ Nj Xu fnH0 如果分析的是异地 core 文件需要采用 snapcore 收集相关 core 信息。对于依赖链接库的情况注意需要增加 -p ldpath=n

17、ewpath:. 重新设置链接库路径只有所有依赖的库都已经被链接才能完整的复现 coredump 故障现场参考 dbx 的帮助文档获取更多信息。f#Ep3L0# cd /tmp/snapcoreZs6lq6i0# dbx p /=./ a.out coreF.cfX!AY c0Type help for help.7R r c!Mm6D0using memory image in coreQt):Olur9h0reading symbolic information .warning: no source compiled with -gn8Dw.K/MEE)_+02C2wA5DvD8z1B0

18、AIX专家俱乐部.zmdVIOT/Abort trap in raise at 0xd01f4f60#S8Cb7vR+ov00xd01f4f60 (raise+0x40) 80410014 lwz r2,0x14(r1) 1kL1q7g0AIX专家俱乐部X9A#eai5JDAIX专家俱乐部CmLxj K?C列举源码信息n(SJw%q0AIX专家俱乐部j,tX8J|7J列举程序源码list需要在运行 dbx 命令时使用 -I 指明源码搜索路径并使用 -g 编译或者汇编码listiAIX专家俱乐部WKR/L (dbx) listi mainAIX专家俱乐部ew;a0tjr0x10001924 (m

19、ain) 7c0802a6 mflr r0AIX专家俱乐部1v4+mv0t;e0z0x10001928 (main+0x4) bfa1fff4 stmw r29,-12(r1)AIX专家俱乐部Ptfef Y&_%0x1000192c (main+0x8) 90010008 stw r0,0x8(r1),l?0OW00x10001930 (main+0xc) 9421ffa0 stwu r1,-96(r1)%O0hcTwn(00x10001934 (main+0x10) 83e20064 lwz r31,0x64(r2)Zub)jG00x10001938 (main+0x14) 90610078

20、 stw r3,0x78(r1)mW/2v2F00x1000193c (main+0x18) 9081007c stw r4,0x7c(r1)AIX专家俱乐部?N)K9)L0x10001940 (main+0x1c) 83a20068 lwz r29,0x68(r2)AIX专家俱乐部H)S;m)U6j%Xe-AIX专家俱乐部9H_nHN4$h9f; qLGy!3cF0 列举变量内容hiD_Y0y5dPjhL%H0 示例代码AIX专家俱乐部)p3mb|UW#include AIX专家俱乐部+w!ko*K#include %P-.y58sW/K0int g_test =0;!v9z&K b6G0A

21、IX专家俱乐部(lE1h;Ylint testfunc(int ¶)AIX专家俱乐部*V!Yq:p3Od0p?uy;?!0 para+;8r?;/p3|0 return 0;Fu(l$ih$TO7ns_0!thr K8O9I0D|8u)Kg3WYyjcw0int main(int argc, char* argv)AIX专家俱乐部twW aJ)|&bf3OKJ:wx:w!Hz$h0 struct sigaction s;AIX专家俱乐部 iHt|7w0 s$kL s.sa_handler = SIG_DFL;AIX专家俱乐部fFeR,sb._4 s.sa_mask.losigs = 0

22、;AIX专家俱乐部A*g/E$P KbJ!y s.sa_mask.hisigs = 0;AIX专家俱乐部Xr&?:A_ s.sa_flags = SA_FULLDUMP;E0X;PL*w S0 sigaction(SIGSEGV,&s,(struct sigaction *) NULL);:;f-e(OT01Y9zloYK0 char str10;AIX专家俱乐部N$r2Ei2m g_test =0;AIX专家俱乐部$Q:Hu9LW:x9U:YVc)A8&q&aM0 testfunc(g_test);AIX专家俱乐部a#K9PF Zb abort();AIX专家俱乐部eVba7_OAIX专家俱

23、乐部0L RgE-XYH# xlC test.C -gMXmg7VeWAG B08kCR(V Cw:x0!dcY2U Ew t-s!0 以全局变量 g_test 举例AIX专家俱乐部.nqZ_g2z.xAIX专家俱乐部4vlgP2q/#print g_test 显示 g_test 的取值F2k(Pc1M,T0,q.CQ)z!mp6Z0#print sizeof(g_test) 显示 g_test 的大小.D(l!Oh3K0spQ%bo(hN/0#whatis g_test 显示 g_test 的类型C? A#wB0w3xsU%EP0#print &g_test 显示 g_test 的地址 AI

24、X专家俱乐部%do-ctQxAIX专家俱乐部yTdrEc.vV,?#&g_test/16x 显示从 g_test 的地址开始处连续 16 个 WORD?byte的取值WI:X2L2rHavd0$d2P-mK9F!o0 如果没有使用 -g 编译则不能动态获取 g_test 的类型、大小等信息但能够得到 g_test 的地址并查询该地址所在区域存储空间的值。.Q?EIz0&yd $n4z,l0 例如!mSN6A0# ./a.outH+y7 z*jKyC%s0IOT/Abort trap(coredump),kKE!u1(u0# dbx ./a.out core.,G!Uv-O,DM r0Type

25、help for help.g.Ec+v-NA#V!gD4N0using memory image in core:cUyXnqjk$Qg4G&d0reading symbolic information .o)R E qc#6ydw)Pb0AIX专家俱乐部yC0i:w75? rHN!DIOT/Abort trap in raise at 0xd03365bcF-h6b;00xd03365bc (raise+0x40) 80410014 lwz r2,0x14(r1)AIX专家俱乐部1E4J1jl;Tc$oe(dbx) print g_testAIX专家俱乐部j8Ac|&k1AIX专家俱乐部E

26、+C WK;T;s(dbx) whatis g_testp0N5um3n#LG8mBD0int g_test;AIX专家俱乐部4h Nv;mI+o(dbx) print sizeof(g_test)M2q:O:yz(Di04Y*f-nY&qE/c0(dbx) print &g_test6fj,a9iY.A00x20000428AIX专家俱乐部,a7pqvIJu-Cc(dbx) &g_test/16xAIX专家俱乐部:B%RCqxS0x20000428: 0000 0001 0000 0000 0000 0000 0000 0000E%U4JtR8x8G7b9aB00x20000438: 000

27、0 0000 0000 0000 0000 0000 0000 0000%Gv&G n%yNW_#05j5|R$m8c0AIX专家俱乐部_4eN2zh8|列举寄存器内容-i*O(o;igs0&tl2k;|gLY2HAS9P0 列举寄存器内容AIX专家俱乐部m yB7J!q5?H?v4MFHhdfiBn0(dbx) registersm5F9$l8W)h0/KnTke2s0 如下模拟一个简单的 core dump对 0 地址赋值引发 core dump 的问题AIX专家俱乐部N vHfwjTI Ma# dbx ./a.out coreAIX专家俱乐部:A2gIP_1Type help for h

28、elp.P _2c.c!Y+?0warning: The core file is not a fullcore. Some info may;L*Ns%IL8m)r0not be available.AIX专家俱乐部P-U8K2_!yTusing memory image in coreAIX专家俱乐部Npa4p-Ireading symbolic information .warning: no source compiled with -g5y#X2FF#T0)mws?%k4V.Ivg!h0U&n7O;Xz&xt0Segmentation fault in main at 0x10000

29、348AIX专家俱乐部!X6rOTC0x10000348 (main+0x18) 90640000 stw r3,0x0(r4)$KQ7mEp0(dbx) whereAIX专家俱乐部)kZwmain(0x1, 0x2ff22ccc) at 0x10000348AIX专家俱乐部-fs;n:?z/T(dbx) registersiS%c m/m#u0 $r0:0x00000000 $stkp:0x2ff22bf0 $toc:0x20000414 $r3:0x00000012AIX专家俱乐部,|%NdIW*K*c&C $r4:0x00000000 $r5:0x2ff22cd4 $r6:0xdeadbeef $r7:0x2ff22ff8Q4n(j!k+wG6f 0 $r8:0x00000000 $r9:0x04030000 $r10:0xf0577538 $r11:0xdeadbeefAIX专家俱乐部yhh:K#PVN $r12:0xdeadbeef $r13:0xdeadbeef $r14:0x00000001 $r15:0x2ff22cccAIX专家俱乐部dq7Li#z:+y $r16:0x2ff22cd4 $r17

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

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