相信看這篇文章的人,都應(yīng)該知道調(diào)試器是什么。在此就不做解釋了危彩。稍微想想就知道攒磨,沒有debugger,我們肯定是能編程的汤徽。Debugger也是一個程序娩缰,要是沒有它,就不能寫程序了谒府,也就不存在Debugger了拼坎。今天把這個問題提出來討論,是因為現(xiàn)在的有些小朋友完疫,已經(jīng)把Debugger神話了泰鸡,覺得沒有調(diào)試器的語言就不是好語言,沒有調(diào)試器就不能編程了壳鹤。調(diào)試器自有它的用處盛龄,但是還沒有重要到那種程度。下面就按照以下幾點來闡述我對調(diào)試器的認識:
- 調(diào)試器的作用
- 調(diào)試器不是萬能的
- 沒有調(diào)試反而會有哪些好處
調(diào)試器的作用
我想它最大的用處芳誓,也是其初衷余舶,應(yīng)該是可以幫助我們定位Bug,從名字也能知道這點锹淌。對于初學(xué)者而言匿值,還可以通過一步一步的調(diào)試來理解程序運行。相信讓我們感覺最恐懼的就是“改不完的bug”赂摆。有了Debugger挟憔,貌似可以讓我們好受一些,要是沒有它就會感覺寸步難行烟号,連自信心都會打折绊谭。相信沒有人會對調(diào)試器的作用產(chǎn)生懷疑。但我并不認為它是無所不能的汪拥。
調(diào)試器不是萬能的
- 如果是在生產(chǎn)環(huán)境出現(xiàn)異常龙誊,相信沒有多少人有機會能現(xiàn)場調(diào)試,就算能調(diào)試喷楣,敢不敢現(xiàn)場調(diào)試也是一個問題。而且基于源碼的調(diào)試鹤树,某些語言或系統(tǒng)平臺是需要debug版本的铣焊,而生產(chǎn)環(huán)境用的版本,一般不太可能是這種debug版本罕伯。但出問題了曲伊,還得解決。
- 調(diào)試器也不能解決一些多線程的問題。有些bug是多個線程并行運行的時候才出現(xiàn)的坟募,如果用調(diào)試器岛蚤,暫停調(diào)試的當(dāng)前線程后,bug就不出現(xiàn)了懈糯。以此類推涤妒,Bug有很多種,并不是所有Bug都能通過調(diào)試器來定位赚哗。
- 不是所有平臺她紫,所有語言的調(diào)試器都是一樣,有些做得比較強大屿储,有些則要稍微次一些贿讹。這也就意味著有些調(diào)試器并不能解決其他的調(diào)試器擁有的功能。
沒有調(diào)試反而會有哪些好處
- 過度依賴調(diào)試器够掠,會讓你思維懶惰民褂,總想著出問題的時候調(diào)試來解決。其實很多問題疯潭,自己稍微動動腦子赊堪,就可以避免的。在沒有調(diào)試器的情況下袁勺,會讓你更加積極的思考和審視當(dāng)前的編寫的代碼雹食,更不容易出錯。
- 沒有調(diào)試器期丰,你就會想其他的辦法來驗證程序的正確性群叶,從而你可能會考慮一些以前你自己完全沒想過的辦法來定位bug。不管是靜態(tài)檢查還是運行時分析钝荡。而這些方法街立,可能會在生產(chǎn)環(huán)境也有用。這是非常有價值的埠通。比如完善的日志收集和分析系統(tǒng)赎离。
- 沒有調(diào)試器,你會成長地更快端辱,效率更高梁剔。有些人用調(diào)試器定位問題,真是那個慢啊舞蔽,一步一步地調(diào)試荣病,真比蝸牛還慢。而Bug又一大堆渗柿,必然效率低下个盆。沒有調(diào)試器的情況下,或許你會更加小心的編寫代碼,對使用的各種語言特性颊亮,用法更加的關(guān)注柴梆,從而提高代碼質(zhì)量≈栈螅可能一開始就有單元測試覆蓋绍在,一步一步走得比較穩(wěn)。這些都會大量降低低級Bug的數(shù)量狠鸳,從而提高效率揣苏。
- 沒有調(diào)試器,你可能會真正成為代碼一次編寫后件舵,沒有任何Bug的高手卸察。
如果你還沒有嘗試過在沒有調(diào)試器的情況下編程,你可以嘗試一下不用調(diào)試器完成一個項目铅祸,或者干脆使用沒有調(diào)試器的語言做一個項目坑质,比如Golang。期待你的反饋和寶貴意見临梗。