成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

筆記|軟件調(diào)試的技巧

DirtyMind / 2384人閱讀

摘要:在軟件世界里,觀察意味著設(shè)置斷點(diǎn)添加調(diào)試語句監(jiān)視程序值以及檢查內(nèi)存在醫(yī)學(xué)領(lǐng)域,需要測試血樣和進(jìn)行光透視。福爾摩斯,最后一案如果你不修復(fù),它不會自動消失。修復(fù)解決問題的能力,是軟件工程師的核心競爭力之一。

這篇文章是《調(diào)試九法:軟硬件錯(cuò)誤的排查之道》的閱讀筆記。這本書的主旨,是介紹如何修復(fù)bug:找出bug發(fā)生的原因、并給出修復(fù)方案。

調(diào)試bug的九個(gè)規(guī)則列舉如下,建議將這個(gè)清單打印出來,擺放在工作時(shí)候能看到的地方。

調(diào)試規(guī)則

接下來一次看下每個(gè)規(guī)則的核心理念,從名字上來看,每個(gè)規(guī)則看起來都比較明顯(PS:由于翻譯的問題,有些詞可能沒那么容易理解),但是理解這些規(guī)則和應(yīng)用這些規(guī)則中間還是差了很多距離的。

規(guī)則1:理解系統(tǒng)

你必須掌握系統(tǒng)的工作原理以及它是如何設(shè)計(jì)的,在某些情況下還要知道為什么這樣設(shè)計(jì)。如果你沒有理解系統(tǒng)中的某個(gè)部分,那么這通常是出問題的地方。(這不僅僅是墨菲定律的問題,如果你不能理解你所設(shè)計(jì)的系統(tǒng),你的工作可能會變得一團(tuán)糟)。

如何理解系統(tǒng)呢?

閱讀手冊

逐字逐句閱讀手冊,仔細(xì)理解每個(gè)細(xì)節(jié)

知道什么是正常的,知道什么是正常的可以幫助你注意到什么是不正常的

知道工作流程,要理解業(yè)務(wù),要講系統(tǒng)的工作過程對應(yīng)到具體要解決的現(xiàn)實(shí)問題

選擇合適的工具,選擇合適的輔助(監(jiān)控、插樁)工具可以幫你理解系統(tǒng)

查閱細(xì)節(jié),經(jīng)驗(yàn)有時(shí)候會騙人,記憶有時(shí)候會出錯(cuò)

規(guī)則2:制造失敗

這一點(diǎn)比較容易理解,就是問題復(fù)現(xiàn),在日常工作中,你在排查一個(gè)問題的過程中,最重要的一步就是復(fù)現(xiàn)問題——能復(fù)現(xiàn)的問題都能解決。

這里有幾個(gè)要點(diǎn)需要注意:

引發(fā)失敗,而不要模擬失敗,不要嘗試用不同的方式去模擬問題,而要模擬和構(gòu)建引發(fā)bug發(fā)生的條件

debug的動作,不要影響錯(cuò)誤的發(fā)生方式,可以影響錯(cuò)誤的發(fā)生頻率

從頭開始,需要有一個(gè)正常的狀態(tài)到不正常的狀態(tài)的過程,從開始正常的狀態(tài)開始觀察,直到問題發(fā)生;

終極方案,控制變量法,將可能引發(fā)錯(cuò)誤的因素依次排除;排除所有可能的原因后,剩下那個(gè)答案,無論多么不可思議,都是事實(shí)。

規(guī)則3:不要想,而要看

親眼看到底層的失敗是非常重要的,如果你猜測失敗是如何發(fā)生的,那常常會修復(fù)一些根本不是bug的問題。

在軟件世界里,觀察意味著設(shè)置斷點(diǎn)、添加調(diào)試語句、監(jiān)視程序值以及檢查內(nèi)存;在醫(yī)學(xué)領(lǐng)域,需要測試血樣和進(jìn)行X光透視。

對細(xì)節(jié)的觀察應(yīng)該到什么程度合適呢?簡單的答案是:一直觀察,直到把問題的原因鎖定在幾種可能之內(nèi)。

在系統(tǒng)設(shè)計(jì)的時(shí)候,就要考慮到將來調(diào)試、排查問題的情況,將日志視為系統(tǒng)設(shè)計(jì)的一部分—打印一些關(guān)鍵日志,或者設(shè)計(jì)一些打開日志的開關(guān),以便在生產(chǎn)環(huán)境針對某個(gè)case進(jìn)行調(diào)試。

日常生活中有很多插樁的case:

體溫計(jì)測量體溫

自行車輪胎漏氣時(shí),都是將輪胎打滿氣,然后放在水里檢查哪里漏氣

天然氣中加入了臭雞蛋的氣味

規(guī)則4:分而治之

反復(fù)將問題分成好的一半和壞的一半,然后縮小搜索范圍,然后進(jìn)一步研究有問題的那一半鏈路。

規(guī)則5:一次只改一個(gè)地方

初中就學(xué)過的控制變量法。
在修改bug時(shí)候,如果某個(gè)改動沒有修復(fù)bug,就應(yīng)該立即把它改回來。

規(guī)則6: 保持審計(jì)跟蹤

記下你的每步操作、順序和結(jié)果;
魔鬼藏在細(xì)節(jié)中;
將一些事情關(guān)聯(lián)起來思考;
好記性不如爛筆頭;

規(guī)則7:檢查插頭

一些顯而易見的假設(shè)可能是錯(cuò)誤的;是不是運(yùn)行了正確的代碼?是不是打了正確的包?插頭是不是掉了?從一些最基本的問題開始確認(rèn),很多時(shí)候問題就出在這里。對自己使用的工具進(jìn)行測試,因?yàn)楣ぞ咭彩且环N軟件,難保不會出問題。

規(guī)則8:獲得全新觀點(diǎn)
“要想重新理清一個(gè)案子的頭緒,最好的方法就是把它講給別人聽?!?——福爾摩斯,《銀色馬》

向別人解釋問題的過程,會讓你對問題進(jìn)行重新的梳理和理解,這時(shí)候可能發(fā)現(xiàn)之前沒有發(fā)現(xiàn)的問題。

bug發(fā)生了,以除掉bug為自豪,而不是非得以自己除掉bug才自豪。

不管你是跟什么人求助,或者需要?jiǎng)e人什么樣的幫助(征求意見、獲取專業(yè)知識、聽取經(jīng)驗(yàn)),在向別人描述問題的時(shí)候,一定要記住一件事——報(bào)告癥狀、而不是講你的理論;另外,有些癥狀你可能不是十分確定,也可以描述出來。

規(guī)則9:如果你不修復(fù)bug,它將依然存在
“當(dāng)危險(xiǎn)已經(jīng)離你很近時(shí),拒絕承認(rèn)它并不是勇敢的表現(xiàn),而是愚蠢。” ——福爾摩斯,《最后一案》

如果你不修復(fù)bug,它不會自動消失。按照前面的規(guī)則解決問題后,要進(jìn)行一次回歸驗(yàn)證,確保已經(jīng)修復(fù)問題,并且沒有引入新的問題。

我的感想

這本書里的很多案例都是是硬件相關(guān)的,對于軟件開發(fā)工程師來說不太熟悉,不過在閱讀的過程中,建議可以想想自己在工作中排查問題的場景,是不是按照一定的章法去排查的?有沒有從最基本的假設(shè)開始確認(rèn)?有沒有查閱文檔?有沒有關(guān)注本次變更的內(nèi)容?有沒有按照二分法進(jìn)行排除?

作為軟件開發(fā)工程師,在實(shí)際工作中很少有機(jī)會從0開始構(gòu)建一個(gè)系統(tǒng),更常見的情況是接手維護(hù)一個(gè)已經(jīng)運(yùn)行了幾年、經(jīng)歷了幾代的系統(tǒng)。寫代碼只是工作中的一部分,還有很多其他的事情需要做:修復(fù)bug、需求評審、系分評審、項(xiàng)目排期等等。

修復(fù)bug(解決問題)的能力,是軟件工程師的核心競爭力之一。在最開始的工作中,有時(shí)候會羨慕老司機(jī)的“直覺”——看到一個(gè)錯(cuò)誤日志,就大概知道是哪里有問題,后來自己查問題查得多了之后,自己也get到了這種“直覺”,也理解了——這不是直覺,這是已經(jīng)被實(shí)踐驗(yàn)證過很多次的經(jīng)驗(yàn),即使這樣,我也會告誡自己——不能完全依賴這種經(jīng)驗(yàn),經(jīng)驗(yàn)有助于縮小待驗(yàn)證的范圍,還是需要事實(shí)(重現(xiàn)問題)去證實(shí)前面的猜測。

本號專注于后端技術(shù)、JVM問題排查和優(yōu)化、Java面試題、個(gè)人成長和自我管理等主題,為讀者提供一線開發(fā)者的工作和成長經(jīng)驗(yàn),期待你能在這里有所收獲。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75391.html

相關(guān)文章

  • 筆記 - 收藏集 - 掘金

    摘要:目錄如何用提高效率后端掘金經(jīng)常有人說我應(yīng)該學(xué)一門語言,比如之類,但是卻不知道如何入門。本文將通過我是如何開發(fā)公司年會抽獎(jiǎng)系統(tǒng)的后端掘金需求出現(xiàn)年會將近,而年會抽獎(jiǎng)環(huán)節(jié)必不可少,但是抽獎(jiǎng)系統(tǒng)卻還沒有。 云盤一個(gè)個(gè)倒下怎么辦?無需編碼,手把手教你搭建至尊私享云盤 - 工具資源 - 掘金微盤掛了,360倒了,百度云盤也立了Flag。能讓我們在云端儲存分享文件的服務(wù)越來越少了。 買一堆移動硬盤...

    Alex 評論0 收藏0
  • ??導(dǎo)圖整理大廠面試高頻數(shù)組8: 移除元素雙指針優(yōu)化, 力扣27??

    此專欄文章是對力扣上算法題目各種方法的總結(jié)和歸納, 整理出最重要的思路和知識重點(diǎn)并以思維導(dǎo)圖形式呈現(xiàn), 當(dāng)然也會加上我對導(dǎo)圖的詳解. 目的是為了更方便快捷的記憶和回憶算法重點(diǎn)(不用每次都重復(fù)看題解), 畢竟算法不是做了一遍就能完全記住的. 所以本文適合已經(jīng)知道解題思路和方法, 想進(jìn)一步加強(qiáng)理解和記憶的朋友, 并不適合第一次接觸此題的朋友(可以根據(jù)題號先去力扣看看官方題解, 然后再看本文內(nèi)容). 關(guān)...

    zhangyucha0 評論0 收藏0

發(fā)表評論

0條評論

DirtyMind

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<