AG亚洲娱乐


AG亚洲娱乐星期天,姐夫带刚上小学的外甥去周口店猿人洞参观。  他觉得该对儿子进行基本的历史教育了,于是指着猿人的模型问道:“你知道你的祖先是谁么?”  外甥吃惊地看着他,答道:“我爷爷?!”AG亚洲娱乐我一直坚持着那个未做完的梦,也许梦醒了我会泪流,也许梦醒了我会心碎,至少,未醒的梦是那么甜美,原谅我学不会放弃!
AG亚洲娱乐我喜欢你。
AG亚洲娱乐A:“这个月,我加了薪,不知道该怎么办?不告诉妻子吧,她总数落我总不加薪,说我是笨蛋。”   B:“那你告诉她好了。”  A:“你当我真是笨蛋?”AG亚洲娱乐 茫人海中相遇即是一种缘分
AG亚洲娱乐午夜的灯光分外明亮,
AG亚洲娱乐今天跟朋友看电影的时候,前排有个小孩大吵大闹,朋友很生气,指着他对我说:“那孩子真没家教!”于是我走到那孩子面前,声色俱厉地问他:你好,你需要家教服务吗,一对一教学不满意不收钱,考上理想大学不是梦。AG亚洲娱乐 昨晚,我一个同事唱完歌凌晨一点了,怕回家打车不安全,,所以到旁边的开封菜点了份外卖,然后让送外卖的顺道带他回去。。。AG亚洲娱乐你告诉我说
AG亚洲娱乐把回想留给了未来
AG亚洲娱乐在沐浴巾里的情况是怎么样的?

皇冠足球比分

大发论坛时时彩平台尊龙娱乐是黑网吗海天国际娱乐城注册送钱凯发娱乐亚美国际娱乐城 金龙国际 www.am8.com 亚洲城娱乐 老k国际娱乐城 666k8.com 金威国际娱乐城 名人国际娱乐城 ag娱乐平台 V博娱乐城 杰克棋牌下载百家乐代理注册送钱e8889.com太阳城娱乐城信誉好不好高手坛圣安娜娱乐新豪娱乐城怎样赢白金国际e路发娱乐皇R烦足球游戏博彩娱乐网博天堂娱乐场凯时娱乐【注册送钱e8889.com】新葡京娱乐金冠骰宝赌博大发体育hg622.com伟易博博狗体育备用

WINDBG常用方法

前言:windbg大家都很熟悉,它是做windows系统客户端测试的QA人员很应该掌握的定位程序崩溃原因的工具,

网上也有很多资料,但是真正适合QA阅读和实用的资料不多,我把我认为最重要最应该掌握的结合以前的使用经验分享一下:

基础篇

1、  打开windbg,打开dmp文件,File——〉open crash dump(其实有更方便的方法,后面会说)

2、  设置符号下载路径和加载路径,File——〉symbol file path,输入srv*d:\symbolslocal*http://msdl.microsoft.com/download/symbols,中间这个路径可以随意设置,如果有其他符号路径,比如产品的模块PDB,加分号分隔即可。

符号是可以定位到具体函数,甚至具体错在哪一行代码的。在分析过程中只要dmp中牵涉到相关的微软模块的pdb都会被下载和加载。网上也有“集合版”的pdb,可以自行搜索,但是符号对应模块的版本不一定适合。

3、  弹出一个workspace的对话框,选什么都无所谓,yes、no都一样,不需要关注

4、  打开dump以后可以看到命令行窗口,如下图打开一个IE的dump文件:

5、  上图最下方的输入窗口就是用来输入调试命令的

6、  第一条命令: !analyze –v,回车,这条命令是万金油,可以自动分析大概是谁导致的崩溃,那么它执行后要关注什么内容?看下图

7、  上图应该怎么看?从下往上看!这里面就是崩溃时内存里面的模块的执行过程。注意看“Following XXX”,字面意思是接下来的段可以错了,程序在这里崩溃了的意思,因为是从下往上走的,所以“Following XXX”上方的内容就是崩溃后的东西,而“Following XXX”下方的内容就是导致崩溃的“原因”,越接近“Following XXX”的越代表有可能是导致崩溃的直接模块,但是这不一定。如果抓到的dmp时机太迟,会出现堆栈破坏的情景,那么“Following XXX”得到的内容可能就是错误的了,那么这个dmp意义就不大,当然QA可以不关注这个,要关注的是如何让自己抓dmp的时机更及时。

8、  第二条命令:kb,回车,这条命令是上面的补充,用来显示当前线程call stack(调用栈)的内容,它可以查看更详细的内存信息,更好的定位崩溃原因,比如上图内容看不到360相关的东西,是不是说这个崩溃和360没关系呢?不一定!看kb的内容

9、  记住从下往上看!上图可以看到是IE调用了safemon.dll的函数后才开始创建dmp的,是不是有理由怀疑这个崩溃和网盾有关了?提BUG吧!

10、  可惜我们只看到和网盾有关,但是具体是网盾什么函数、什么参数导致的都看不到,如何看?这时就看出符号文件的重要性了!

Ps:还有一个命令是~*kb ,它用来显示dump中所有线程的call stack, 一般用到它说明这个dump已经比较难看了,可以从命令结果中搜索KiUserExceptionDispatcher等关键字,一般可以认为存在KiUserExceptionDispatcher的线程就是导致崩溃的线程。

高级篇 

1、  设置DMP类型文件关联用windbg打开

  a) cmd到windbg目录运行windbg –IA 

2、  手动抓DMP的方法:

  a) 如果程序崩溃后没有DMP文件生成可采取下面方法转存DUM。

  b) 当程序崩溃还没有退出的时候,开启WINDEBUGGER程序,在FILE——执行attach to a process——选择崩溃的进程。

  c) 再执行.dump /ma C:\testdump.dmp(如果没有/ma,dump大小比较小) 

3、自动抓DMP的方法:

  a) cmd到windbg目录运行 windbg -IS

  b) 进行导致崩溃的操作

  c) 即可抓到dmp,执行.dump /ma C:\testdump.dmp 

4、  使用windbg调起进程调试

  a) 开启WINDEBUGGER程序,在FILE——执行Open Executable——选择要进行调试的进程文件

  b) 当进程没有自保护或者没有反调试时,在input框输入g,回车,即可打开进程,此时如果进程发生崩溃,会被立即捕捉到。这种方法拿到的dmp比第二种更好。

5、  设置Global Flags,自动attach进程。Global Flags(简称gflags),设置它之后,目标进程启动时会立即被attach,主要用于调试一些系统进程,或“有依赖的”进程,这些进程不能直接由方法4打开,只能由其他进程调用,而调用用立即崩溃,所以也不能用方法2。这个方法同时可以设置很多检查项。

posted @ 2015-11-24 16:55 肥狐 阅读(...) 评论(...) 编辑 收藏