Linus談?wù){(diào)試器和內(nèi)核如何發(fā)展
譯者序:關(guān)于LINUX內(nèi)核的開發(fā),我覺得這些觀點(diǎn)都是正確的,因為觀點(diǎn)都表達(dá)了不同的使用者的喜好。這些喜好都是需求。對于不同的使用者他們會更具自己的喜好,去使用不同的環(huán)境。這些都體現(xiàn)了LINUX的靈活性和可開發(fā)改造性,這些特點(diǎn)是別的系統(tǒng)所沒有的。這就是我喜歡LINUX的一個原因。
關(guān)于不同的開發(fā)環(huán)境,個人有自己的喜愛和偏好,而各種環(huán)境都有自己的特點(diǎn)。我想這樣的爭論應(yīng)該保持下去,因為這樣的爭論會促進(jìn)LINUX的發(fā)展。能開發(fā)出各種各樣優(yōu)秀的工具。而這些工具的生存不在于一兩個人,而是廣大的LINUX 的用戶去決定的。
我想不同的觀點(diǎn)將出現(xiàn)不同的風(fēng)格。但是我不想LINUX的各種版本變的非常的大,而且他們相互都不互相融合。我認(rèn)為Linus的觀點(diǎn)是完全正確的,保證LINUX的內(nèi)核的統(tǒng)一性和完整性。這樣就保證了各種不同版本的LINUX一起發(fā)展。
我不喜歡調(diào)試器,從來不,大概永遠(yuǎn)不會喜歡。我只使用GDB,而且我總是并不把它作為調(diào)試器來使用,只是將其作為一個可以用來分析程序的分解器來使用。
任何關(guān)于內(nèi)核調(diào)試器的意見、爭論都沒有觸動我,哪怕是絲毫。相信我,這么多年來我收到很多這方面的建議,到最后,他們都只能歸結(jié)為很基礎(chǔ)的(東西):—— 開發(fā)應(yīng)該變得更容易,我們能夠更快的加入許多新的東西。
坦白地說,我并不在意(這個問題)。我認(rèn)為對內(nèi)核的開發(fā)不會是很容易的事。我不贊成那種通過一個個代碼逐步去尋找錯誤的做法。我認(rèn)為系統(tǒng)的額外可見度并不是一件必要的好事。
很明顯,如果你在沒有使用一個內(nèi)核調(diào)試器的情況下就附和這種觀點(diǎn):
—— 你會遇到一系列的問題:一旦出錯,系統(tǒng)就會崩潰,你會失敗;
—— Linux 內(nèi)核編程太難太費(fèi)時,人們會對其失去信心;
—— 創(chuàng)出新的特色需要一段很長的時間。
沒有一個人能向我解釋這些問題。對我來說,這不是一個問題,這是它的特點(diǎn)。這不僅是已經(jīng)有證明文件證明的,而且這是好事。因此很明顯這不是一個問題。
“創(chuàng)出新的特色需要一段很長的時間”——這一點(diǎn)在調(diào)試器方面尤為不是一個強(qiáng)有力的論據(jù)。對Linux來說,缺少特色或新代碼不是一個問題,事實上,這對整個軟件產(chǎn)業(yè)來說都是如此。相反,我的主要工作就是對那些新的特色/特征說“不”,而不是去尋找它們。
的確,當(dāng)(系統(tǒng))崩潰,你甚至不能獲得一絲線索,只有失敗,那么只能得到兩種結(jié)果:你要么小心翼翼的重新開始;要么開始對內(nèi)核調(diào)試器不斷抱怨。
坦白的說,如果(工程進(jìn)程中)出現(xiàn)粗心大意的情況,我寧愿擯棄那些在開始時就沒有小心謹(jǐn)慎的人。這聽上去很無情,就算是上帝聽上去也會感覺無情。但這并不是人們所認(rèn)為的那種“如果你不能承受壓力,那就干脆離開”的情況。這里(所包含的意義)要更深一些。我寧可不和那些粗心大意的人一起工作。這就是軟件發(fā)展的進(jìn)化論。
這樣把人分成兩種是一個冷酷、無情的觀點(diǎn)。我寧愿選擇第一種人,忍受他們。
我是一個比較自私的人。我完全不知道人們?yōu)槭裁匆獜牟煌矫孢M(jìn)行考慮,但是他們確實是(那么做的)。人們認(rèn)為我是個好人,但事實上我是個詭計多端的自私鬼,只要最終能得到我所認(rèn)為的更好的系統(tǒng),那么我對任何感情的傷害或工作時間的損失都不在乎。
我并不只是(在口頭上)說說而已,我真的不是一個很好的人。我能面無表情地說“我不在乎”,而且我確實不在乎。
我相信不使用內(nèi)核調(diào)試器會迫使人們在一個不同的層次上考慮問題。我認(rèn)為如果你不使用調(diào)試器,你就不能得知他如何運(yùn)轉(zhuǎn)以及你如何處理,你就試圖從別的角度去考慮問題。你會想在不同的層次上理解事情。
在一定程度上更多的是“源代碼對二進(jìn)制”(的問題)。你不必不得不去查看源代碼(當(dāng)然你可以去查看,任何優(yōu)良的調(diào)試器使其輕而易舉)。你必須在源代碼之上的層次進(jìn)行查看。就是說,不使用內(nèi)核調(diào)試器的話,你將不得不去理解程序在做什么,而不僅僅是特定的(代碼)行。
坦白的說,對于許多實際問題(這和錯誤截然不同的,那些愚蠢的錯誤是那么多)來說,調(diào)試器并沒有多大的作用。這些實際問題正是我所擔(dān)心的。剩下的就是一些細(xì)節(jié)了,他們最終都會被確定下來。
我能理解那些與我不一致的意見。我不是你們的母親,如果你愿意的話你可以使用內(nèi)核調(diào)試器,我不會因為你自己的“毀譽(yù)”而輕視你。但是我不會去協(xié)助你使用他,我真誠希望人們不要高頻率地使用內(nèi)核調(diào)試器。因此我不會將其作為評定的標(biāo)準(zhǔn),如果現(xiàn)有的調(diào)試器沒有被人們很好的了解,我不會去(刻意)糟蹋貶低他。因為我是一個比較自私的人,但是我以此為榮!
評論