图书前言

推荐语(按照姓氏拼音排序)

这本书难得地做到了两件事:一是把调试、排障、逆向等“底层活儿”写得既系统又生动;二是不仅讲技术,更传递了问题导向的思维方式。它不是简单的流水账,而是作者多年与系统“死磕”的现场笔记,内容硬核,案例真实,读完让人更想深入底层世界。

段钢  看雪学苑创始人 

本书作者从实战案例中提炼调试方法和技巧,如抽丝剥茧;系统性解决复杂软件问题的工程能力,似庖丁解牛。本书是深入掌握软件调试的良师益友。

李建忠  全球机器学习技术大会主席,

CSDN高级副总裁

本书暗含一条从调试入手“打怪升级”(格蠹致知)的修炼路径,从利用调试手段解决日常困扰,到以调试利器刺探深层漏洞和底层细节,再到御调试之剑在大规模系统软件的世界中自如穿梭。

中文的“调试”一词比英文的 Debug 含义更广,不但包含了“捉虫”的字面意思,还包含了调优测试等设计活动,其实正切合调试活动的实质。调试早已与软件设计和维护密不可分。细品书中的鲜活案例,体会其中的软件作者(不乏来自“大”公司的“大”软件)设计实现上的得失,在会心一笑、拍案叫绝之际,读者的软件设计功力和品味也得到滋养。

本书出版时,以 LLM 为代表的 AI 新浪潮正席卷软件工业,而 Kerninghan定律(书中的戴氏法则表达了类似的意思)仍适用:“人人都知道调试代码的难度是编写代码的两倍。所以如果你在写代码时用尽全力,那么你要如何调试它呢?”请读者朋友思考:如何确保 AI 生成的代码可调试?又如何调试“最聪明”的 AI 生成的代码?

杨文波  资深嵌入式 C++ 程序员,《现代 C++ 白皮书》

《C++ Templates(第2版)》《C++ Core Guidelines 解析》等书译者

格物致知,方可通达。“格蠹”亦是如此。此书贵在“以战说法”,将深奥的系统原理,融合于一个个真实的案例之中。它带我们穿越崩溃、死锁与挂起的迷雾,抽丝剥茧,寻踪觅迹,不仅传授调试之“术”,更启迪我们洞察软件运行之“道”。

朱少民  CCF杰出会员、《软件工程3.0》作者

推荐序——Debug公案:痛并快乐着 

Debug 是所有程序员痛苦与欢乐的来源,银奎聚焦于软件调试多年,也已出版过两本软件调试的畅销书,但这本书太不同了。他之前写的技术书,和大多数技术书籍一样采取 循序渐进讲技术点的方式,读者阅读和实践的过程就类似于机器学习,以此建立起扎实系统和体系。而这本书采取“以战说法”的方式,讲述了63 个真实调试的故事,阅读时就像阅读系列侦探小说一样引人入胜,而是否真正掌握了 debug的思路和屠龙技,可以在每个案件里打磨,不同段位的 “debugging 侦探”对每个案件的处理、分析还可以衍生出更多的知识点,太过瘾了!2024 年第一届 CCF 程序员大会,银奎演讲时把我和他都感慨过的一句话放到大屏幕上:“计算机科学是一门极度工程化的 hands-on 学科,和其他学科太不同了。” 这也正是这本书最独特的地方 ,全部都是“hands-on”的实例和“当时”在各种压力条件下的解决之道——铁打的bug,流水的调试,这本书的问题描述和分析,才是历久弥新的精华所在。今天,AI 已经在编程中替代了很多人工工作,但是在各领风骚的 debugging 里,工程师的智慧闪烁其中,当然你会培养自己的AI华生或者黒斯廷斯。

 说起程序调试,随着计算机体系结构从单机、单进程迅速发展到多线程、大规模并行和分布式系统,人类bug 侦探的头脑极限,就面临着新工具和新方法的瓶颈,譬如多线程程序的线程安全隐患,就无法使用单步和设置断点的方式复现,必须采用统计方法的工具加以侦测;而面对大模型训练和推理这样大规模集群的并行应用,对错误的预测和定位是更大的挑战。曾经有很长时间,debugging 和测试都不被重视,但每一个殚精竭虑从调试中走过来的工程师,才真正知晓系统调试的重要性。吴伯凡老师曾经说过一个洞见:“一个组织里最重要的工作,往往是不被看见的。” 这里,就包含着含辛茹苦的调试工作。

 读这本书,我常想起 2001 年那个遥远的芝加哥郊区,同事们周末去市中心放松,我说:“你们走,我总算有一整天可以debug 了”,当然那不证明我有多精于调试,很有可能我只是个笨蛋侦探毛利小五郎,那时候我如果认识银奎君,就会做好笔记,留下自己的侦探故事。

何万青  清程极智合伙人 VP,前 Intel 首席工程师,

阿里云高性能计算负责人

前言

很多人都上过大学,但是很遗憾,很多人都没有认真读过《大学》这本书。 

或许是因为值得学习的东西太多了,至少对于像我这样的理科生来说,传统文化中的很多瑰宝被忽视了。比如,我们上了很多作文课,却没有认真读一读《文心雕龙》;我们读了很多的书,却没有读一下短小精悍的经典之作《大学》。 

30 多岁后,我开始广泛阅读非技术类书籍,随着涉猎越来越广,终于有机会接触到那些本来被忽视的文化瑰宝。当我第一次读到《文心雕龙》的第一句话“文之为德也大矣”时,真是感动不已,思接千载,仿佛看到了 1500 多年前的那位前辈…… 

第一次读《大学》时,我不禁拍案,原来那句“治国平天下”出自这本书。后来反复阅读,慢慢体会到这本小书的精妙。 

今年夏天,曾经与几位“格友”到苏州木渎小聚,在灵岩山上分享阅读《大学》的心得,很多陌生的游客围过来倾听。篇幅关系,此处只分享《大学》里的一个要点,即格物。 

所谓《大学》,即大人的学问,中心思想是如何修身,也就是平常所说的人生是一场修炼。如何修身呢?简单回答就是要格物。 

《大学》原文如此:“古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知,致知在格物。” 

上文中的“格物”“致知”“正心”“诚意”“修身”“齐家”“治国”“平天下”被称为大学的“八条目”,用来支持“明明德”“新民”“止于至善”这三个纲领。 

在八条目中,“格物”位于末端,是基础。 

完整的《大学》分“经”和“传”(读 zhuàn)两部分,“传”是用来解释“经”的。解释“格物”的部分在流传过程中散失了,宋代大儒朱熹做了补充,这就是著名的《格物补传》,我很喜欢朱熹的文笔,其中的一段又可谓朱熹笔下的精华,必须引用一下: 

“所谓致知在格物者,言欲致吾之知,在即物而穷其理也。盖人心之灵莫不有知,而天下之物莫不有理,惟于理有未穷,故其知有不尽也。是以《大学》始教,必使学者即凡天下之物,莫不因其已知之理而益穷之,以求至乎其极。至于用力之久,而一旦豁然贯通焉,则众物之表里精粗无不到,而吾心之全体大用无不明矣。此谓物格,此谓知之至也。” 

这段话对格物思想做了非常好的阐释,但是没有明确解释“格物”二字的含义。读八厚本《朱子语类》之第二册,里面有更详细的解释,以师生问答的形式为主。 

以我的浅薄理解,“格”的主要含义是探究和穷尽,可以做动词,也可以做形容词。所谓格物,就是探究事物,认识和深入理解,直到穷尽其内涵。 

人生修炼有很多种方法,我喜欢格物思想的主要原因是它很客观具体,不主观虚无;很积极进取,不空洞无为。 

世间万物,错综复杂,千头万绪,虽然很多道理是相通的,即所谓“千头万绪,终归一理”(朱熹语),但如何领悟到那一理呢?回答是格物,今日格一件,明日再格一件,日积月累,终究一日会融会贯通。 

本书就是在带读者格物——探究调试之道,通过一个个软件调试的真实案例,带读者见识典型故障,积累调试经验,在日积月累中融会贯通。 

最后以朱熹的名句收尾与格友们共勉。 

“万理虽只是一理,学者且要去那万理中千头万绪都理会,四面凑合来,自见得是一理。 不去理会那万理,只管去理会那一理,只是空想象。” 

张银奎 

2024-12-08 于 863 国家软件园