
致谢
首先感谢本书的编辑——Addison-Wesley出版社的Trina Fletcher MacDonald,以及Effective系列的编辑Scott Meyers,他们在本书的推进过程中提供了良好的指导与管理。也要感谢本书的技术评审Dimitris Andreadis、Kevlin Henney、John Pagonis及George Thiruvathukal,他们提供了几百条绝妙的思路、评论及建议,使得本书的品质得以改善。特别要感谢文字编辑Stephanie Geels,她准确地指出书稿中的问题,并适当地加以修改,这个过程本来是令我心生畏惧的,然而她高超的工作水准使该过程变得很轻松。我也要感谢出色完成生产管理工作的Melissa Panagos、督导整个成书过程的Julie Nahil,以及为书籍进行排版的LaTeX高手Lori Hughes。Sheri Replin提出了编辑意见, Olivia Basegio管理了本书的技术评审组,Chuti Prasertsith设计了优秀的封面,Stephane Nakib指导了营销工作,感谢他们,并向Alfredo Benso、Georgios Gousios与Panagiotis Louridas致意,他们帮助我确立了本书的早期构想。
书中有4条是根据我发表在《IEEE Software》期刊“Tools of the Trade”专栏中的材料扩展而成的:
❏第5条来自“Differential Debugging”vol.30, no.5, 2013, pp.19-21.
❏第22条来自“Working with Unix Tools”vol.22, no.6, 2005, pp.9-11.
❏第58条来自“I Spy”vol.24, no.2, 2007, pp.16-17.
❏第66条来自“Faking It”vol.28, no.5, 2011, pp.96, 95.
此外还有4条需要说明:
❏第63条是根据Martin Fowler在《Eradicating Non-Determinism in Tests》(2014年4月14日)及《TestDouble》(2006年1月17日)这两篇文章中所提出的想法而写成的。
❏第48条所提出的大部分重构,都源自Martin Fowler所写的《Refactoring》(重构)一书(Addison-Wesley, 1999)。
❏第60条的写作动力,来自《Real-World Concurrency》这篇文章(Bryan Cantrill and Jeff Bonwick, ACM Queue, October 2008)。
❏第66条中的Java代码是根据Tagir Valeev的意见写成的。
雅典经贸大学(Athens University of Economics and Business)的诸位同事,在我的学术生涯中提供了多方面的慷慨帮助,并且(有时是在无形之中)促成了本书的写作,他们包括:Damianos Chatziantoniou、Georgios Doukidis、Konstantine Gatsios、George Giaglis、Emmanouil Giakoumakis、Dimitris Gritzalis、George Lekakos、Panagiotis Louridas、Katerina Paramatari、Nancy Pouloudi、Angeliki Poulymenakou、Georgios Siomkos、Spyros Spyrou及Christos Tarantilis。
调试是一种技艺,要在实践中才能学成,因此,我要感谢过去40年来所遇到的诸位同事,感谢他们在我所写的代码中发现bug、给我提供有效的问题报告、对我的代码做出评审及测试,并且教我怎样避免问题、追查问题及修复问题。下面大致按照从近到远的顺序列出我在职场与学术界所遇到的同事:
❏在Google的Ads SRE FE团队工作时的同事:Mark Bean、Carl Crous、Alexandru-Nicolae Dimitriu、Fede Heinz、Lex Holt、Thomas Hunger、Thomas Koeppe、Jonathan Lange、David Leadbeater、Anthony Lenton、Sven Marnach、Lino Mastrodomenico、Trevor Mattson-Hamilton、Philip Mulcahy、Wolfram Pfeiffer、Martin Stjernholm、Stuart Taylor、Stephen Thorne、Steven Thurgood及Nicola Worthington。
❏CQS的同事:Theodoros Evgeniou、Vaggelis Kapartzianis及Nick Nassuphis。
❏当前或者曾经在雅典经贸大学管理科学与技术系进行研究和实验的诸位同事:Achilleas Anagnostopoulos、Stefanos Androutsellis-Theotokis、Konstantinos Chorianopoulos、Marios Fragkoulis、Vaggelis Giannikas、Georgios Gousios、Stavros Grigorakakis、Vassilios Karakoidas、Maria Kechagia、Christos Lazaris、Dimitris Mitropoulos、Christos Oikonomou、Tushar Sharma、Sofoklis Stouraitis、Konstantinos Stroggylos、Vaso Tangalaki、Stavros Trihias、Vasileios Vlachos及Giorgos Zouganelis。
❏担任希腊财政部的信息系统秘书长时的诸位同事:Costas Balatos、Leonidas Bogiatzis、Paraskevi Chatzimitakou、Christos Coborozos、Yannis Dimas、Dimitris Dimitriadis、Areti Drakaki、Nikolaos Drosos、Krystallia Drystella、Maria Eleftheriadou、Stamatis Ezovalis、Katerina Frantzeskaki、Voula Hamilou、Anna Hondroudaki、Yannis Ioannidis、Christos K.K.Loverdos、Ifigeneia Kalampokidou、Nikos Kalatzis、Lazaros Kaplanoglou、Aggelos Karvounis、Sofia Katri、Xristos Kazis、Dionysis Kefallinos、Isaac Kokkinidis、Georgios Kotsakis、Giorgos Koundourakis、Panagiotis Kranidiotis、Yannis Kyriakopoulos、Odyseas Kyriakopoylos、Georgios Laskaridis、Panagiotis Lazaridis、Nana Leisou、Ioanna Livadioti、Aggeliki Lykoudi、Asimina Manta、Maria Maravelaki、Chara Mavridou、Sofia Mavropoulou、Michail Michalopoulos、Pantelis Nasikas、Thodoros Pagtzis、Angeliki Panayiotaki、Christos Papadoulis、Vasilis Papafotinos、Ioannis Perakis、Kanto Petri、Andreas Pipis、Nicos Psarrakis、Marianthi Psoma、Odyseas Pyrovolakis、Tasos Sagris、Apostolos Schizas、Sophie Sehperides、Marinos Sigalas、George Stamoulis、Antonis Strikis、Andreas Svolos、Charis Theocharis、Adrianos Trigas、Dimitris Tsakiris、Niki Tsouma、Maria Tzafalia、Vasiliki Tzovla、Dimitris Vafiadis、Achilleas Vemos、Ioannis Vlachos、Giannis Zervas及Thanasis Zervopoulos。
❏在FreeBSD项目工作时的同事:John Baldwin、Wilko Bulte、Martin Cracauser、Pawel Jakub Dawidek、Ceri Davies、Brooks Davis、Ruslan Ermilov、Bruce Evans、Brian Fundakowski Feldman、Pedro Giffuni、John-Mark Gurney、Carl Johan Gustavsson、Konrad Jankowski、Poul-Henning Kamp、Kris Kennaway、Giorgos Keramidas、Boris Kovalenko、Max Laier、Nate Lawson、Sam Leffler、Alexander Leidinger、Xin Li、Scott Long、M.Warner Losh、Bruce A.Mah、David Malone、Mark Murray、Simon L.Nielsen、David O'Brien、Johann'Myrkraverk'Oskarsson、Colin Percival、Alfred Perlstein、Wes Peters、Tom Rhodes、Luigi Rizzo、Larry Rosenman、Jens Schweikhardt、Ken Smith、Dag-Erling Smørgrav、Murray Stokely、Marius Strobl、Ivan Voras、Robert Watson、Peter Wemm及Garrett Wollman。
❏LH Software及SENA的同事:Katerina Aravantinou、Michalis Belivanakis、Polina Biraki、Dimitris Charamidopoulos、Lili Charamidopoulou、Angelos Charitsis、Giorgos Chatzimichalis、Nikos Christopoulos、Christina Dara、Dejan Dimitrijevic、Fania Dorkofyki、Nikos Doukas、Lefteris Georgalas、Sotiris Gerodianos、Vasilis Giannakos、Christos Gkologiannis、Anthi Kalyvioti、Ersi Karanasou、Antonis Konomos、Isidoros Kouvelas、George Kyriazis、Marina Liapati、Spyros Livieratos、Sofia Livieratou、Panagiotis Louridas、Mairi Mandali、Andreas Massouras、Michalis Mastorantonakis、Natalia Miliou、Spyros Molfetas、Katerina Moutogianni、Dimitris Nellas、Giannis Ntontos、Christos Oikonomou、Nikos Panousis、Vasilis Paparizos、Tasos Papas、Alexandros Pappas、Kantia Printezi、Marios Salteris、Argyro Stamati、Takis Theofanopoulos、Dimitris Tolis、Froso Topali、Takis Tragakis、Savvas Triantafyllou、Periklis Tsahageas、Nikos Tsagkaris、Apostolis Tsigkros、Giorgos Tzamalis及Giannis Vlachogiannis。
❏欧洲计算机产业研究中心(European Computer Industry Research Center, ECRC)的同事:Mireille Ducassé、Anna-Maria Emde、Alexander Herold、Paul Martin及Dave Morton。
❏伦敦帝国学院(Imperial College London)计算机科学系的同事:Vasilis Capoyleas、Mark Dawson、Sophia Drossopoulou、Kostis Dryllerakis、Dave Edmondson、Susan Eisenbach、Filippos Frangulis Anastasios Hadjicocolis、Paul Kelly、Stephen J.Lacey、Phil Male、Lee M.J.McLoughlin、Stuart McRobert、Mixalis Melachrinidis、Jan-Simon Pendry、Mark Taylor、Periklis Tsahageas及Duncan White。
❏加州大学伯克利分校计算机科学研究组(Computer Science Research Group, CSRG)的同事:Keith Bostic。
❏Pouliadis&Associates公司的同事:Alexis Anastasiou、Constantine Dokolas、Noel Koutlis、Dimitrios Krassopoulos、George Kyriazis、Giannis Marakis及Athanasios Pouliadis。
❏在各种会议及各种场合认识的诸位朋友:Yiorgos Adamopoulos、Dimitris Andreadis、Yannis Corovesis、Alexander Couloumbis、John Ioannidis、Dimitrios Kalogeras、Panagiotis Kanavos、Theodoros Karounos、Faidon Liampotis、Elias Papavassilopoulos、Vassilis Prevelakis、Stelios Sartzetakis、Achilles Voliotis及Alexios Zavras。
最后感谢家人多年来对我的支持,以及在我撰写本书时所给予的鼓励,有时我要在家里调试系统,甚至放弃度假和周末休息时间而去写稿。尤其感谢Dionysis帮我绘制图5.2,并感谢Eliza和Eleana帮我选定本书的封面。