Debug Hacks
除錯駭客-極致除錯的技巧與工具
身為一個美食部落客文章前面有食物照片也是很合理的(?
沒錯這是一本很硬的工具書,但我還是厚顏無恥的把它算在書單裡了(?)。畢竟也花了我兩個禮拜的上下班時間QQ。這種真●工具書寫重點節錄沒甚麼效益,所以下面都是心得兼 murmur : D
會看這本是某天 Mentor 請假,突然一個 Kernel Panic 從別的 Team 過來,菜雞如我第一次看 Oops Message 看得好痛苦,跟旁邊的學長研究了好久。最終主管看不下去出手相救。救完之後就丟了這本書說可以看看,所以其實是個奉旨讀書(?)的概念。
這本的內容雖然有點舊了不過很適合 Linux Kernel 新手工程師,而對一般軟體工程師的幫助就相對少了一些。強者我學長看了一下就覺得這是底層可憐人才需要看的東西。
Calling Convention、共用函式庫的呼叫機制與Linux Kernel 這種東西,除了研究所主題就做這個的人以外一般學生在出社會之前應該沒甚麼機會碰到,更別提相關的除錯技巧了。而這本書除了除錯技巧以外也講了許多有助於除錯的工具,例如如何設定 diskdump/kdump/minicon/IPMI watchdog/NMI watchdog 這些工具。看過之後才發現平常每天都會用到的 serial console / NMI watchdog 這些工具原來都是要另外設定的(艸);離開公司系統的我可能就變成廢人一個了(?)
不過這類除錯相關的方法與技巧就跟其他所有東西一樣熟能生巧。光是看過這些理論而沒有實際動手操作過很快就會忘記了。像是 GDB 指令使用、理解 Assembly 與 C 的相互對應等等都是一點一滴累積而來的。就像看完了 LDD3 不自己寫一遍 Kernel Module 還是甚麼都不會一樣。
其實會走上軟體工程這條路不是因為有多熱愛這件事情,純粹是年輕時不懂事覺得寫軟體聽起來很酷,一步錯步步錯,從此萬劫不復(?)。相反於一般人對軟體工程很酷的想像,軟體工程師其實是個十分枯燥,需要無比耐心細心卻同時又需要想像力的工作。在除錯的過程中要一步一步抽絲剝繭排除各種因素,但又要有足夠的想像力才有機會在毫無頭緒時靈光一閃找到正確的作法。Debug 所需要的其實就是前一篇文章中提到的解決問題的能力,要如何由症狀找到問題並用各種方式修復。
總而言之這本書講述了許多除錯的方法,可以幫助新手工程師如我了解到 Linux Kernel 工程師的軍火庫內有那些 ㄍㄟ ㄒㄧ,但要如何熟練地使用這些工具就要看個人造化了。作者提到他們在寫這本書的時候是抱著「如果學生時代能有這樣的書就好了」的心態來分享除錯心得,我也覺得這本書很適合資訊相關科系的學生,就算之後沒有要走 Kernel 相關的領域也能簡略的理解底層民眾的生活(?)
我學長萎嗯常說
Linux Kernel 就是人類智慧的結晶
任何最先進的技術與演算法,只要夠穩定都會被一群瘋子丟到 Kernel 裡面去,集結了眾人智慧的 Linux Kernel 怎麼會不有趣呢!他唯一的問題就是太有趣了點阿(つд⊂)