51Testing软件测试论坛
标题:
Debugging Tools for Windows 学习使用心得
[打印本页]
作者:
cleverman
时间:
2009-5-21 04:52
标题:
Debugging Tools for Windows 学习使用心得
其实我的主要工作一直是UI test, UI automation, manual test 等等。曾经跟领导提过想做些深入点的测试,领导则反问 “你Kernel debugging 怎样?”。这是一个非常有趣的问题,你因为不具备良好的kernel debugging的能力,所以不给你做深入的测试工作,而因为你没有做深入的测试使你也不可能具备kernel debugging的能力。很多时候事情就是如此矛盾的,而我也曾经说过,一切最终还得靠自己。
前几天发现一个奇怪的bug,分给这里的一个seniro dev他也没太多的办法。我在一个高手的指导下自己debug and figure out了root cause。在和这个高手的交流中,也基本明确了一下步的学习目标。以前的我主要是靠自己摸索,我想多跟高手接触,交流还是非常非常有帮助的,当然机会也不是很多。那么我的下一步的目标就是“code review, debugging, windows internal and WDM”。Debugging可以说贯穿了其他的三个,因此我今天先谈谈我对debugging tools的感受。
我们基本都是用微软提供的几个debuggers,ntsd, cdb, kd, windbg。ntsd和cbd是user mode debugger, kd是kernel mode debugger, 他们都是command line的,而windbg是UI的debugger, 可以调试both user and kernel mode。大多数情况,我都是用windbg,但是在一些特殊的情况下,我还是需要其他的tools。今天我主要是谈windbg,我想学习windbg大概分这么几个阶段:
windbg的命令,共三种命令,普通命令,加'.'的命令和加'!'的命令。Debugging tools自带的那个教程学习一下就应该差不多了,以后就靠经验积累了。
如何开始debug, 这要根据你所debug的目标和要debug的问题来决定了。你应该决定是使用user debugger 还是 kernel debugger, 是 local debugging 还是 remote debugging, 是用windbg还是ntsd, 等等。通常都有几种方式去debug,你要能够准确选择一个最合适的。
怎样进行debug。对于一个需要debug的问题,你需要有你的策略。比如,在哪里设置断点,如何设置断点,等等技巧。
利用一些tools。有些情况下只有debugger还是很难debug,你需要使用其他的tools去辅助。比如,有的时候在问题显露的时候已经太晚了,你很难追踪问题发生时的情况。这里,你可以用一些tool使得在事情发生的时候跳到debugger上去。
Code review非常重要。当你发现一个bug的时候,如果你代码熟悉,你可能直接就能想到问题出在哪里,或者你稍微读读代码就能发现问题所在,根本就不需要debugger。而在你debugging的时候,常常你也需要review相关的代码来理解这个问题。
汇编语言。当你在调试optimized code的时候,你常常不能通过dv, dt等命令正确地看参数,变量等等,或者变量根本就没得显示。这就需要你具备汇编语言的阅读能力,了解calling convention, 不同cpu的汇编,以及在disassembly模式去调试。
Kernel debugging。如果你具备了以上的技能以后,user mode debugging应该不成什么问题了。但是对于调试kenrel mode还是需要一些附加的知识与技能。首先,kernel debugger的命令很多跟user mode的就不一样了,你需要学习。其次,你需要了解Windows internal的知识和数据结构,以及Windows driver model。这也是为什么我把Windows internal 和 WDM作为两个学习要点。
最后引用高手的两句话,“debug一两年,你就没什么问题debug不了了”,“只要能repro,你总能找到办法去debug”。
http://peking2toronto.blogspot.com/
作者:
smz_198181
时间:
2009-5-21 11:16
很同意cleverman的观点,多学习debug技术对于自己的综合解决问题能力极有帮助,但是这也非常需要自己的主观能动性。毕竟国内要求测试工程师常用这类技术的太少。我现在单位也不怎么需要这些技术,但我也很喜欢在遇到疑难问题后,常规方式(业务逻辑,log分析,数据库对应proc,trig检查,出错处代码检索)无法解决后,使用dbx,gdb方式去跟一下,但是这种机会很少,我也只是学到很浅的一点debug技术。还是要多加努力啊。cleverman, 问你个问题,你觉得云计算未来5年在中国会有多大的发展,对于中国现有it行业的格局会产生什么样的影响呢。如果想在这个大的it新技术革命中有所收获,应该作些什么样的准备。(个人认为云计算虽然已经有了大的动静,但真正影响人们的生活还要到5到10年以后)
作者:
cleverman
时间:
2009-5-23 09:28
标题:
回复 2# 的帖子
我那天回你了,不过发贴失败,back回去文本都消失了。现在懒的写第二遍了,而且云计算这东西现在还不成熟,我也不是行业人士,观望一下吧。到现在还没什么太激动人心的平台出现呢。
作者:
shanxi
时间:
2009-5-23 14:35
标题:
有谁知道Windows xp->Vista->win7 内核有哪些变化呢?
呵呵
Windbg 原理这块 推荐看《
软件调试
》这本书
51testing这里,工作中用起windbg的人很少很少,国内一般的公司很难建立这样一个架构。
[
本帖最后由 shanxi 于 2009-5-23 14:47 编辑
]
作者:
cleverman
时间:
2009-5-23 21:03
标题:
回复 4# 的帖子
现在Windows internals这本书是针对XP的,新一版针对Vista的下个月出版。Vista->Win7内核变化不大,XP->Vista变化很大,所以新版非常有借鉴作用。(不过我感觉大体上也还差不多,我看得XP的,基本也适用于Win7,至少原理还是很类似的,实现细节还没看)
《软件调试》是翻译版,还是中国人写的?我一般喜欢看英文原版。
测试人用的是少,所以我现在在其他论坛看看,不过发现那里发言的人也很少。看来高手都比较沉默。
作者:
shanxi
时间:
2009-5-25 13:15
标题:
回复 5# 的帖子
《软件调试》是中国人写的,曾经得到国外debug大师的推荐,作者15年调试经验。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2