- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最老的新技术:调试Oracle技术实战
在堆栈中寻找异常宕库原因
ebay 首要数据库工程师 吕海波(VAGE )
内容简介
内容简介:
什么是调试Oracle技术
程序的机器级表示
断点
发现断点
神奇的等待事件:等待事件原理分析
案例
什么是调试Oracle技术
调试Oracle就是对Oracle进行逆向工程,再通俗点说,就是反汇编Oracle 。
相信听到这个结果的朋友,一定会认为:
什么是调试Oracle技术
调试Oracle就是对Oracle进行逆向工程,再通俗点说,就是反汇编Oracle 。
相信听到这个结果的朋友,一定会认为:
什么是调试Oracle技术
但其实不是这样的,Oracle 的逆向工程没有你想像中的哪么难。它是真正的纸老虎。
什么是调试Oracle技术:逆向工程
我们的目的,并不是要读懂Oracle每一条反汇编代码,我相信这不可能,代码量太
大了。我们只需要从反编代码找出我们感兴趣的片断即可。这样一来,难度就大大
下降,再借助现在优秀的调试工具,gdb/ mdb和DTrace,对于有开发功底的DBA来
说,可以说易如反掌。
调试Oracle技术有什么用
在开始之前,还要回答一个问题:
为什么要这么做?或者,调试Oracle有什么用。
搞这么难的东西有什么用?
调试Oracle技术有什么用
答案很简单,一是这东西其实没相像中哪么难。二是在我做DBA的职业生涯中,总
有些疑难问题,让我有求神拜佛的冲动。
什么是调试Oracle技术
就像这样:
调试Oracle技术有什么用
或这样:
什么是调试Oracle技术
告诉浙江地区DBA一个经验,
我2010年初,去灵隐上完香之后,大半年内,事故率没有下降
2010年底去普陀山上完香之后,大半年内事故率下降了50%
什么是调试Oracle技术
除了去普陀山上香外,我想,我也要做点什么。不能老是麻烦神仙帮忙。
于是,我就开始了我的“调试Oracle ”之旅。
程序的机器级表示程序的机器级表示
让我们从一个简单的小例子开始吧。让我们从一个简单的小例子开始吧。
有个笑话,程序员准备练书法,提起狼毫笔,占足墨汁,在徽州宣纸上写下饱满的有个笑话,程序员准备练书法,提起狼毫笔,占足墨汁,在徽州宣纸上写下饱满的
Holle word
程序的机器级表示
很可惜,我们不能Hello Word开始,它包含的元素太少了,我们从下面这个例子开
始。
它包含几个对我们来说最基本的元素:变量(局部变量、全局变量)、函数调用、
参数传递。
int result;
void add(int p1, int p2)
{
result=p1+p2;
return ;
}
int main()
{
int a,b;
a=1;
b=2;
add(a,b);
printf(%d+%d=%d\n,a,b,result);
return 0;
}
这个程序很简单,先了解一下它是干吗的。然后,我们就先从它开始。
程序的机器级表示
它包含几个对我们来说最基本的元素:变量(局部变量、全局变量)、函数调用、
参数传递。
int result; main: pushq %rbp
文档评论(0)