现在的位置: 首页 > 综合 > 正文

advanced windows debug(windows高级调试)读后感

2018年05月03日 ⁄ 综合 ⁄ 共 992字 ⁄ 字号 评论关闭

去年买了这本书一直没看,直到最近总算大致看完了。

这本书描述了windows调试器windbg的使用(第一部分),如何利用这个工具解决调试中遇到的问题,如栈破坏、堆破坏等(第二部分),以及一些高级话题,比如自己编写扩展调试命令(第三部分),我在调试过程中一直没有找到命令可以查看ansi格式的中文字符串,du只能查看unicode16格式的,所以自己写了个可以方便查看。在工程中实际用到的另一个东西是查看minidump文件,不知道什么原因,visualstudio2008在很多情况下查看的栈信息并不对,而windbg则没这问题

与visualstudio调试工具相比,windbg采用的不同的调试引擎,visualstudio调试功能其实也很强大,但是都是用户态的,有些东西不确定能不能查看,比如查看句柄之类的,还有内存泄露查看相关,这本书中则介绍了如何使用windbg查看内存堆,查看句柄等方法,visualstudio的优势是集成开发环境,使用起来更加方便,windbg则功能更加强大,但是不得不在文本编辑、调试器、编译器工具之间来回切换。对于我自己的项目开发,visualstudio的一个很大缺点是运行速度太慢了,可能是项目比较大的缘故。

想深入了解windows调试比较底层的知识(栈、堆、内存、各种windows内核对象),这本书+windbg帮助文件+google是很好的选择

代码相关

代码下载:前言示例代码种有网址

代码编译:

工具:下载WDK,其中包含一个完整的C/C++开发环境,以及丰富的相关开发工具

编译方式:1.7节有说,在每一章目录中运行build,可能弹如下错误提示

1>d:/winddk/7600.16385.1/bin/makefile.new(361) : error U1050: e:/code/awd/chapte
r11/sysexts: USE_NATIVE_EH has an invalid value, change it to 1.
1>nmake.exe /nologo BUILDMSG=Stop. -i BUILD_PASS=PASS1 NOLINK=1 NOPASS0=1 MAKEDI
R_RELATIVE_TO_BASEDIR= failed - rc = 2

解决方法是:

将Source文件的的:
    USE_NATIVE_EH=SYNC
修改为
    USE_NATIVE_EH=ASYNC

抱歉!评论已关闭.