作为一名Windows平台上的C/C++开发人员,我们有N个学习WinDbg的理由: 
有些Bug只有在客户和QA的机器上才能重现,我们不可能在他们的机器上装一个VC吧
WinDbg可以让我们方便的保存和分析Dump文件
WinDbg的调试功能比VC强大的多,比如它有强大的API断点和条件断点
调试内核和驱动,我们只能用WinDbg
用WinDbg可以让你更深入的理解系统,理解计算机,用VC你看到的是自己的代码,用WinDbg你看到的是整个进程
......
最重要的,微软用WinDbg开发和调试Windows操作系统,它是Windows平台上最重要的调试工具.

要用好WinDbg,我认为有几个重要的基本知识需要了解和掌握:
首先要了解PE文件格式,它告诉我们的Exe(Dll)的内部结构,执行时它是如何映射和加载到内存中的
接下来我们要知道程序运行时内存中究竟有哪些东西, 它们的页面属性,他们是如何分布的,比如Stack, Heap, Modules等
还有就是要知道程序是如何运行的,每个线程都有自己的堆栈,CPU是如何从程序入口开始取一条条指令执行,执行过程中堆栈(Stack)是如何变化的
当然,你需要学习一点汇编知识,不一定要会写,但起码要能看懂汇编。

有了上面这些基本知识,接下来你只要学习下WinDbg的基本命令就可以入门了,
后面你要做的就是在工作中尽量多用WinDbg调试程序,并尝试写一些WinDbg脚本。

个人收集的一些WinDbg资料:WinDbg参考资料
posted on 2012-08-15 14:12 Richard Wei 阅读(4487) 评论(6)  编辑 收藏 引用 所属分类: windbg

FeedBack:
# re: 如何学习WindDbg
2012-08-15 16:39 | Cheap lace wigs
如果搞Windows,c/c++开发,WinDbg 确实是必备的技能,学习了  回复  更多评论
  
# re: 如何学习WindDbg
2012-08-15 17:27 | zaccheo
调试release版异常的时候接触到了windbg。第一感觉是原来还可以这样调试程序。接下来就是后悔自己大学里没有好好学习汇编了。  回复  更多评论
  
# re: 如何学习WindDbg
2012-08-15 17:50 | Richard Wei
@zaccheo
VS2008 Release版默认编译选项就是生成PDB符号的,在有符号的情况下用WinDbg调试程序其实不需要什么汇编知识。  回复  更多评论
  
# re: 如何学习WindDbg
2012-08-15 23:25 | tb
嗯 很好的工具 大学没有学好 现在要好好学了   回复  更多评论
  
# re: 如何学习WindDbg
2012-08-22 09:43 | zhangmo
学习了  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理