原文链接:http://www.douban.com/review/2763493/
今天花了一天的时间从头到尾翻了一遍, 跳过了那些有X86汇编的部分, 和分析C++ CRT中解构析构的部分,其他的都读了一遍。
读完之后唯一的感觉就是: 此书非读不可, 而且要经常读。
毫无疑问作者对于链接, 装载和库这三个方面是有深刻的认识的, 于深度和广度都无可挑剔, 而且组织文字的能力也属上乘, 虽然我之前看过相当多相关的spec, 但是读一本书可以这么快, 不能不说作者文字功底确实不错。
不过我觉得, 如果能把dwarf的信息加进去就好了, 再加上一些讲调试的章节, 改为链接,装载,库与调试, 就完美了。
调试部分不是讲技巧, 这方面已经有几本好书了, 可以侧重调试信息的解析, 调试器的工作原理, 以及前面三者对调试的支撑, 互相之间协作等等。
作者在书中一直提及一个观点: 计算机科学领域的任何问题, 都可以通过添加一个中间层来解决。
在书的很多章节都反复引用并论证了这个观点, 我也觉得非常有道理, 不过事物总是两方面的, 每添加一个中间层都会带来很多额外的负担, 比如验证中间层工作是否正确工作, 规范外部的调用接口, 这都是很大的工作量, 另外还会在调试的时候带来相当多的麻烦, 比如滥用COM。
还有一个缺点就是, 引入新的中间层, 会让被隔离在外面的人失去对底层的了解, 最终会体现在调试上面, 或者对接口的误用, 所谓难以两全吧。
这个方法似乎也不局限于计算机领域, 这几天在看书的时候, 我会随手做很多概要, 把认为重要的东西都作为条目写下来, 然后抽一段时间做整理。以前总是阅读-收藏/保存, 然后凭记忆再做整理, 或者干脆不整理, 回头总是发现似懂非懂, 要去找出处的时候又遍寻而不得, 很浪费时间。
这应该也是个中间层, 把零散的资料做初步的整理, 然后再集中的消化, 效果还是不错的。