您的位置:首页 > 数据库

gdb调试之---当commit时碰到的第一个等待事件是什么?

2014-01-18 20:18 417 查看
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/18458231
还是接着上一篇文章的实验:gdb调试之---当update时第一个持有的Latch是什么Latch锁? http://blog.csdn.net/guoyjoe/article/details/18456937
1、退出gdb

(gdb) q The program is running.  Quit anyway (and detach it)? (y or n) y Detaching from program: /u01/app/oracle/product/11.2.0/bin/oracle, process 7376


2、通过系统进程号7376打开gdb程序

[oracle@mydb ~]$ gdb $ORACLE_HOME/bin/oracle 7376 GNU gdb Fedora (6.8-27.el5) Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.  Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu"... (no debugging symbols found) Attaching to program: /u01/app/oracle/product/11.2.0/bin/oracle, process 7376 Reading symbols from /u01/app/oracle/product/11.2.0/lib/libodm11.so...(no debugging symbols found)...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libodm11.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libcell11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libcell11.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libskgxp11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libskgxp11.so Reading symbols from /lib64/librt.so.1...done. Loaded symbols for /lib64/librt.so.1 Reading symbols from /u01/app/oracle/product/11.2.0/lib/libnnz11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libnnz11.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libclsra11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libclsra11.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libdbcfg11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libdbcfg11.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libhasgen11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libhasgen11.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libskgxn2.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libskgxn2.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libocr11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libocr11.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libocrb11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libocrb11.so Reading symbols from /u01/app/oracle/product/11.2.0/lib/libocrutl11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libocrutl11.so Reading symbols from /usr/lib64/libaio.so.1...done. Loaded symbols for /usr/lib64/libaio.so.1 Reading symbols from /lib64/libdl.so.2...done. Loaded symbols for /lib64/libdl.so.2 Reading symbols from /lib64/libm.so.6...done. Loaded symbols for /lib64/libm.so.6 Reading symbols from /lib64/libpthread.so.0...done. [Thread debugging using libthread_db enabled] [New Thread 0x2b0b8fef0910 (LWP 7376)] Loaded symbols for /lib64/libpthread.so.0 Reading symbols from /lib64/libnsl.so.1...done. Loaded symbols for /lib64/libnsl.so.1 Reading symbols from /lib64/libc.so.6...done. Loaded symbols for /lib64/libc.so.6 Reading symbols from /lib64/ld-linux-x86-64.so.2...done. Loaded symbols for /lib64/ld-linux-x86-64.so.2 Reading symbols from /usr/lib64/libnuma.so.1...done. Loaded symbols for /usr/lib64/libnuma.so.1 Reading symbols from /lib64/libnss_files.so.2...done. Loaded symbols for /lib64/libnss_files.so.2 Reading symbols from /u01/app/oracle/product/11.2.0/lib/libnque11.so...done. Loaded symbols for /u01/app/oracle/product/11.2.0/lib/libnque11.so 0x0000003f0d40d290 in __read_nocancel () from /lib64/libpthread.so.0 (gdb)


3、执行commit,commit被阻塞了。
gyj@OCM> commit;


4、设断点(预先知道待等事件的函数kslwtbctx),并运行。

(gdb) b kslwtbctx Breakpoint 1 at 0x8f9a5c2 (gdb) c Continuing.  Breakpoint 1, 0x0000000008f9a5c2 in kslwtbctx () (gdb)


5、查等待事件kslwtbctx函数的第一个参数,用命令info all-register显示寄存器

(gdb) info all-register rax            0x8f     143 rbx            0x1      1 rcx            0x11263  70243 rdx            0x11974  72052 rsi            0x2acf2e 2805550 rdi            0x7fff1c577028   140733668880424 rbp            0x7fff1c576ed0   0x7fff1c576ed0 rsp            0x7fff1c576ed0   0x7fff1c576ed0 r8             0x0      0 r9             0x7a59   31321 r10            0x9b0abcb8       2601172152 r11            0x0      0 r12            0x1      1 r13            0x0      0 r14            0xbb132a4        196162212 r15            0x1      1 rip            0x8f9a5c2        0x8f9a5c2 <kslwtbctx+4> eflags         0x246    [ PF ZF IF ] cs             0x33     51 ss             0x2b     43 ds             0x0      0 es             0x0      0 fs             0x0      0 gs             0x0      0 st0            0        (raw 0x00000000000000000000) ---Type <return> to continue, or q <return> to quit--- st1            0        (raw 0x00000000000000000000) st2            0        (raw 0x00000000000000000000) st3            0        (raw 0x00000000000000000000) st4            0        (raw 0x00000000000000000000) st5            0        (raw 0x00000000000000000000) st6            333296   (raw 0x4011a2be000000000000) st7            300384   (raw 0x401192ac000000000000) fctrl          0x27f    639 fstat          0x0      0 ftag           0xffff   65535 fiseg          0x0      0 fioff          0x9394e95        154750613 foseg          0x7fff   32767 fooff          0x1c573f50       475479888 fop            0x0      0 xmm0           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm1           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm2           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm3           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x8000000000000000, 0x8000000000000000}, v16_int8 = {0xfe, 0xff, 0xff, 0xff,      0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, v8_int16 = {0xfffe, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff,      0xffff, 0xffff}, v4_int32 = {0xfffffffe, 0xffffffff, 0xfffffffe, 0xffffffff}, v2_int64 = {0xfffffffffffffffe, 0xfffffffffffffffe},    uint128 = 0xfffffffffffffffefffffffffffffffe} ---Type <return> to continue, or q <return> to quit--- xmm4           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm5           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x32, 0xa3, 0xd7, 0x2, 0x0 <repeats 12 times>},    v8_int16 = {0xa332, 0x2d7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x2d7a332, 0x0, 0x0, 0x0}, v2_int64 = {0x2d7a332, 0x0},    uint128 = 0x00000000000000000000000002d7a332} xmm6           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm7           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0xda, 0x87, 0xd7, 0x2, 0x0 <repeats 12 times>},    v8_int16 = {0x87da, 0x2d7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x2d787da, 0x0, 0x0, 0x0}, v2_int64 = {0x2d787da, 0x0},    uint128 = 0x00000000000000000000000002d787da} xmm8           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm9           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm10          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm11          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm12          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x18, 0xe, 0x73, 0x90, 0xb, 0x2b, 0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xe18, 0x9073, 0x2b0b, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x90730e18, 0x2b0b, 0x0, 0x0},    v2_int64 = {0x2b0b90730e18, 0x0}, uint128 = 0x000000000000000000002b0b90730e18} xmm13          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} xmm14          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} ---Type <return> to continue, or q <return> to quit--- xmm15          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0,      0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000} mxcsr          0x1fa1   [ IE PE IM DM ZM OM UM PM ]


6、rdi/edi是第一个参数, rsi/esi是第二个参数,贴出info all-register命令所显示函数kslwtbctx()的两个参数,如下
rsi 0x2acf2e 2805550 ----第二个参数
rdi 0x7fff1c577028 140733668880424 ----第一个参数

7、利用第一个参数rdi=0x7fff1c577028,显示内存中32个字节。

(gdb) x/32 0x7fff1c577028 0x7fff1c577028: 0x00007a59      0x00000000      0x1c577110      0x00007fff 0x7fff1c577038: 0x01b5e250      0x00000000      0x00000000      0x00000000 0x7fff1c577048: 0x00000000      0x00000000      0x00000000      0x00000001 0x7fff1c577058: 0x00000000      0x00000000      0x00000000      0x00000000 0x7fff1c577068: 0x00000000      0x00000000      0x00000000      0x00000000 0x7fff1c577078: 0x00000000      0x00000000      0x00000001      0x00000000 0x7fff1c577088: 0x0a12110c      0x00000000      0x0000008f      0x00011974 0x7fff1c577098: 0x7fffffff      0x00000000      0x00011263      0x00000000 (gdb)


8、找到等待事件的编号是0x0000008f,转化为十进制为143,即0x0000008f ===>143号

9、找出commit的等待事件
sys@OCM> select  name from v$event_name where event#=143;  NAME ---------------------------------------------------------------- log file sync


10、commit时的第一个等待事件就是log file sync。

QQ:252803295
技术交流QQ群:
DSI&Core Search Ⅰ 群:127149411(2000人技术群:未满)
DSI&Core Search Ⅱ 群:177089463(1000人技术群:未满)
DSI&Core Search Ⅲ 群:284596437(500人技术群:未满)
DSI&Core Search Ⅳ 群:192136702(500人技术群:未满)
DSI&Core Search Ⅴ 群:285030382(500人闲聊群:未满)

MAIL:dbathink@hotmail.com
BLOG: http://blog.csdn.net/guoyjoe
WEIBO:http://weibo.com/guoyJoe0218
ITPUB: http://www.itpub.net/space-uid-28460966.html
OCM: http://education.oracle.com/education/otn/YGuo.HTM
ACONG: http://www.acoug.org/category/membership
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 等待事件 gbd