非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/217172
张银奎
Intel 英特尔软件架构师,系统调试专家
毕业于上海交通大学信息与控制工程系,长期从事软件开发和研究工作,对 IA-32 架构、操作系统内核、驱动程序、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast 和各种技术会议上做过《Windows Vista内核演进》《调试之剑》(2008年中国软件技术大会)《感受和思考调试器的威力》(CSDN SD2.0大会)《Windows启动过程》《如何诊断和调试蓝屏错误》《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软 “深入研究Windows内部原理系列”的一部分)等。
著有《软件调试》《格蠹汇编》,担任杂志《程序员》中“调试之剑”的专栏作者,创建高端调试网站(ADVDBG.ORG)。
翻译(合译)作品有《观止——微软创建NT和未来的夺命狂奔》《数据挖掘原理》《机器学习》《人工智能:复杂问题求解的结构和策略》等。
个人情况
非常感谢您能接受图灵的访谈。作为软件调试方面的专家,您从什么时候开始对软件开发和研究产生兴趣的?
读高中时,我第一次接触到计算机,学习了一点点BASIC语言编程。1992年上大学后,我开始比较多的接触计算机,并系统地学习编程。那时候,计算机还没有普及,大家只能到学校的计算机房上机练习。通常,我先把代码写在本子上,到了机房后再输入到电脑里编译执行。刚开始学习编程时,遇到过很多困难,有些概念也搞不清楚。于是,我经常跑到图书馆翻阅相关的图书或者到昂立书店买些计算机方面的书。大约到了大二下学期,我和几个同学合伙买了一台个人电脑—486。记得当时花了9000多元,在华山路的一家店里买的,最后打车才运回学校。于是我有了更多的上机练习机会,开始写各种各样的程序,有时也编写一些比较复杂的程序,比如DOS操作系统中的TSR程序。就这样,我便逐渐喜欢上了编程这件事。
根据多年的研究和实践,请您总结下自己调试软件的方式,或者说,对抗瑕疵软件采取的步骤?能否向读者介绍几种对抗问题软件的高效工具?
软件的问题五花八门,调试软件的方式也有很多种。通常,应该根据问题的特征选择合适的方式。比如看源代码、查日志等。我最喜欢用的方式还是使用调试器,用的最多的有WinDBG和GDB。有时,我也会用一些系统分析工具,比如VTUNE、WPT等。
据了解,您将在7月23-24日参加由麦思博主办的上海MPD软件工作坊进行技术分享, 能否简要介绍下此次的分享主题?
我一直坚持技术路线,几乎每天都写代码和调试。软件的技术变化很快,如何能不被淘汰呢?我的方法是持续专研软件产业中那些“永恒”的难题。在相对稳定的“战地”上开辟道路、建立领地。软件瑕疵是个永恒的难题,我在这方面投入了很多时间,探索出了一套以调试器为核心的方法。与瑕疵和调试相关的另一个永恒难题就是软件的安全性。安全漏洞,可以说是一种特别的瑕疵。发现和研究安全漏洞离不开调试方法。最近几年,我的大部分时间都花在软件安全和渗透测试上,在这次的上海MPD上,我会分享《针对WEB应用的渗透测试工具和测试方法》。
在软件领域,您最崇拜哪些人,他们对您的帮助、影响很大?
我很崇拜David Cutler ——全世界公认的Windows NT之父,我们现在最常用的从XP开始直到Win7全部都是NT的内核,只是版本号不一样。
作为NT内核的主要缔造者,David在NT内核中设计的很多机制,比如两轮异常分发,以及非常易于调试的资源锁,都是我非常欣赏的。他的编码风格和软件价值观对我影响很大。
除了技术领域,我了解到,您还特别崇拜人文领域的孔孟、朱子。可以给我们分享一些先哲们对您影响最深的思想吗?
是的,我很喜欢读《论语》,里面站着一个活生生的孔子。他喜欢读书育人,真诚不虚伪。我也的确很喜欢读朱熹的书,比如《朱子语类》和《四书集注》。我喜欢朱熹总结出的“格物”思想,到现实中去,学习具体的人情物理,不抽象不空洞,很适合科学研究。
相当一部分技术工作者,或者扩展至大部分当代人都有点“实用主义”,他们很少涉略古籍,更没有闲情赋诗。您如何看待这种现象?或者说,古籍和古诗给您带来了哪些体验?
这个话题好大。黄永玉先生在他的长篇自传体小说《无愁河的浪荡汉子》里曾说过,“要做一个有情致的人”。这句话很合我意。不管平凡还是伟大,要做一个别致有趣的人。技术的东西很呆板,过分拘泥就会变得乏味无趣。读古籍却可以穿越时空,思接千载,体味古人的喜怒哀乐,学习他们的智慧,感悟他们的情怀。
著书与写作
您写的两本书《软件调试》《格蠹汇编》,受到了读者的一致好评。两本书的侧重点有哪些不同?《格蠹汇编》的案例来自哪里?
两本书都是关于软件和调试的,探讨的角度不同,前者以理论为导向,后者是“以案说法”。用宋儒的“理一分殊”思想来解说,前者是那“一理”,后者是“散为万物”。《格蠹汇编》中的案例都是我自己亲历的,也可以说,它们是我坚持奋战在软件开发第一线的收获。
创建高端调试网站(ADVDBG.ORG)的初衷是什么?经营网站的过程带给您哪些专业方面的提升和生活方面的体验?有没有想过让网站走入商业模式?
创建高端调试网站的时候,目的很单纯,就是想借用这个平台,分享调试方面的知识,结识同好。十几年过去了,通过网站我确实结识了很多好朋友。丰富网站内容的过程,也促使我养成多读、多写的习惯。把点点滴滴的读书体会写成文章,对于写书也是有帮助的。
我没有想过把网站进行商业化处理,也不喜欢网页上的漫天广告,特别讨厌那些飘呀飘的“东西”,所以高端调试网站从没有发布过商业广告,十几年下来,一直坚持技术交流、知识共享。
如何做到本职工作和业余写作、网站创建两不耽误的?有什么高效能习惯分享给大家?
这没有什么窍门,只是少把时间用在其它方面。
前人之鉴,后人之师
回顾自己学习软件调试的过程,自己走过哪些弯路,遇到过哪些困难?如何解决的?
我始终觉得有时花点笨力气、稍微绕一点远或者走一点弯路也不是什么坏事情。所以我不在意自己在技术方面走过的弯路,记不住了。
对于有志进入软件调试领域的青年人,有哪些推荐的书籍?有哪些建议?
调试是一门以实践为主的技术,多动手操作是关键。建议大家先学一点基本的用法,然后就开始实践,遇到问题后再找书或者找资料看。可以选几个《格蠹汇编》中的案例,边读边做,逐步入门后可以结合自己工作中遇到的实际问题来检验自己的水平,发现差距再学习。如此往复,“今日既格得一物,明日又格得一物,工夫更不住地做。如左脚进得一步,右脚又进一步;右脚进得一步,左脚又进,接续不已,自然贯通。”(朱熹语)
再次感谢张银奎老师,花费宝贵的时间,接受图灵的访谈!
更多精彩,加入图灵访谈微信!