《Windows调试内幕——实用调试与跟踪技巧》翻译 Day 3: 简介

转载请注明出处,谢谢

翻译时间:2019-02-25

译者:周林

翻译进度:18/600(3%)

原书对应页码:第xvii页 ~ xxviii页

 

简介 

       软件编程的最激动人心的一点就是:完成同一个目标通常由很多种方法。但同时不幸的是:这也表示软件工程师在尝试为每种具体场景做最佳设计与实现时,会面临相同的挑战。经验起到了重要作用。工程师的成长经常是伴随着学习如何避免重犯过去错误进行的。然而可惜的是,经验因人而异。我遇到过一些软件工程师,他们在某个领域工作了很长时间之后,仍然缺乏对他们天天打交道的工作任务背后的运行原理的基本理解;而另一些工程师,他们在某个领域仅仅工作一小段时间之后,就能完美驾驭。

       这本书介绍了基于微软Windows专家级开发者使用的“瑞士军刀”——Windows调试器(WinDBG)和Windows性能工具箱(Xperf)来解决软件开发问题的方法论。这本书致力于让读者对系统特性与部件的运行原理,不光知其然亦知其所以然。它将大大缩短读者通过实际经验的学习进程,从而降低在面对新问题时的出错概率。整个过程中非常重要的一点是:学会将已知解决方案和已有解决方案进行对比。

       软件工程仍然是一门实践科学。(有些人可能会反对,说它是一门艺术而不是科学。)实践才能出真知,这一点被其他科学规律反复检验过了,在软件工程领域尤为突出,因为所有的行为都可以被理性解释。毕竟,它只是代码——无论是你自己编写的代码,还是在你的软件中直接或者简介引用的其他人编写的代码——这些代码总能被跟踪与理解。

       尽管作为调试与跟踪实验的一部分,这本书花了一些篇幅揭示了Windows操作系统的一些架构细节,但是我写这本书的主旨并不在此,而在于鼓励读者掌握动手调试与跟踪的方法。我希望你使用这种方法不光能搞定本书中所展示的这些有趣问题,还能举一反三、系统化地运用该方法解决更多的实际问题。

       尽管在随书源代码中你可以找到不少优秀示例,但是本书的目标不是用来教你如何编写本机或者托管代码。因为本书主要讲解如何使用调试和跟踪工具来揭示系统内部原理,所以相对于那些只希望快速上手某种具体技术的工程师,本书可能对渴望理解系统内幕的软件工程师更为合适一些。但是我相信本书所揭示的这些方法和思想,对各个技术层级的工程师都适用。事实上,与许多人的想法相反,遇到的棘手问题所涉及的技术层面越高,越难以窥探内部原理、越需要更多的专业知识和调试技巧来解决。举个例子,在纯C中,malloc的调用仅仅是一个函数调用。在C++中,调用new运算符方法来为对象分配内存时,编译器会插入关键字new的调用,并插入构造对象的代码(初始化虚函数指针、调用基类构造函数、构造对象的数据成员、最后调用用户自定义的子类构造函数。)在C#(.NET)中,将涉及更多的方面,因为new关键字一行代码的调用,背后涉及.NET运行时子系统编译new的相关代码、.NET执行引擎执行安全检查、加载目标类型定义所在的模块、为后期的垃圾回收进行对象引用计数,等等。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值