设为首页 加入收藏

TOP

[20190419]shared latch spin count.txt(五)
2019-09-17 18:49:47 】 浏览:223
Tags:20190419 shared latch spin count.txt
sp;    16

LADDR
----------------
0000000060009A18
Statement processed.

--//回到window 3,按ctrl+c中断:
(gdb) c
Continuing.
^C
Program received signal SIGINT, Interrupt.
0x00000037990d6407 in semop () from /lib64/libc.so.6
(gdb) bt 8
#0  0x00000037990d6407 in semop () from /lib64/libc.so.6
#1  0x0000000009809c0f in sskgpwwait ()
#2  0x00000000098089ce in skgpwwait ()
#3  0x0000000000a86d3f in kslgess ()
#4  0x00000000093faca5 in ksl_get_shared_latch ()
#5  0x0000000004a2c53e in kslgetsl_w ()
#6  0x0000000007d74142 in skdxcall ()
#7  0x00000000076c96aa in ksdxcall ()
(More stack frames follow...)

--//可以确定函数调用的堆栈或者称为顺序,当前停在semop睡眠上,可以发现调用kslgetsl_w后,ksl_get_shared_latch,
--//紧接着的是kslgess.这样猜测spin计数在调用kslgess或者ksl_get_shared_latch函数里面.

2.重复前面测试,在gdb下设置断点:
--//在session 1按ctrl+c,退出window 3的gdb程序,重新执行gdb.
--//window 3:
$ rlwrap gdb -p 30319
(gdb) break kslgess
Breakpoint 1 at 0xa865ca

--//设置断点在kslgess函数调用上.然后在session 1,2分别执行(后面不再说明):
--//再次挂起!在window 3,执行如下:
--//如果我执行ni 1000应该不会错过什么,可以这时看寄存器应该猜测spin count在那个寄存器中.
--//跟踪半天不对,看了链接https://fritshoogland.wordpress.com/2015/07/17/oracle-12-and-latches-part-2/
--//应该在kslskgs函数中.

(gdb) break kslskgs
Breakpoint 1 at 0xa874fa
(gdb) c
Continuing.

Breakpoint 1, 0x0000000000a874fa in kslskgs ()

(gdb) ni 100
..
(gdb) info regi r13 rip
r13            0x764    1892
rip            0xa875e3 0xa875e3 <kslskgs+237>
(gdb) ni
0x0000000000a875be in kslskgs ()
(gdb) info regi r13 rip
r13            0x764    1892
rip            0xa875be 0xa875be <kslskgs+200>
(gdb) ni
0x0000000000a875c8 in kslskgs ()
(gdb) info regi r13 rip
r13            0x764    1892
rip            0xa875c8 0xa875c8 <kslskgs+210>
(gdb) ni
0x0000000000a875cb in kslskgs ()
(gdb) info regi r13 rip
r13            0x764    1892
rip            0xa875cb 0xa875cb <kslskgs+213>
(gdb) ni
0x0000000000a875d1 in kslskgs ()
(gdb) info regi r13 rip
r13            0x764    1892
rip            0xa875d1 0xa875d1 <kslskgs+219>
(gdb) ni
0x0000000000a875d4 in kslskgs ()
(gdb) info regi r13 rip
r13            0x764    1892
rip            0xa875d4 0xa875d4 <kslskgs+222>
(gdb) ni
0x0000000000a875da in kslskgs ()
(gdb) info regi r13 rip
r13            0x764    1892
rip            0xa875da 0xa875da <kslskgs+228>
(gdb) ni
0x0000000000a875dd in kslskgs ()
(gdb) info regi r13 rip
r13 
首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/15/15
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇说说MySQL索引 下一篇RAC配置笔记

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目