本人七年多編程經(jīng)驗(yàn),了解互聯(lián)網(wǎng)和編程相關(guān)知識(shí),歡迎關(guān)注本人頭條號(hào)。
對(duì)于難以重現(xiàn)的bug,關(guān)鍵要找到問(wèn)題的本質(zhì),尤其在出現(xiàn)一些bug完全沒(méi)有思路的時(shí)候。這里說(shuō)下我解決相應(yīng)問(wèn)題的手段。
分析清楚問(wèn)題,即找到bug產(chǎn)生的后果。這一步非常重要,也是后面找到問(wèn)題產(chǎn)生原因的目標(biāo)。如是產(chǎn)生了崩潰,還是對(duì)數(shù)據(jù)的增刪改查出現(xiàn)問(wèn)題,使最終的數(shù)據(jù)出現(xiàn)非預(yù)料的結(jié)果,有時(shí)暴露出的問(wèn)題只是表象,通過(guò)抽絲剝繭,層層分析驗(yàn)證找到真正的問(wèn)題。
列出會(huì)產(chǎn)生問(wèn)題的模塊,重點(diǎn)懷疑的模塊,然后逐個(gè)分析,直到確認(rèn)。注意不要由于思維慣性想當(dāng)然遺漏謀個(gè)產(chǎn)生問(wèn)題的模塊,很多時(shí)候?qū)Υa非常熟悉后單單排查重點(diǎn)懷疑的模塊就可以找到問(wèn)題根源。
原因假設(shè)和驗(yàn)證。這點(diǎn)需要一定的經(jīng)驗(yàn),而且也是解決類(lèi)似問(wèn)題的主要手段。像題主舉的例子,可以猜測(cè)下是否正式環(huán)境數(shù)據(jù)問(wèn)題,代碼中對(duì)條件判斷不能覆蓋這樣的情況,驗(yàn)證可以找到相應(yīng)訂單數(shù)據(jù)加以測(cè)試。
日志源碼,對(duì)于后臺(tái)電銷(xiāo)外呼程序日志非常重要,往往是很多線(xiàn)上問(wèn)題解決的重要線(xiàn)索。
上下文排查,實(shí)在沒(méi)思路可以通過(guò)定位影響的代碼位置上下文回溯。
當(dāng)然源碼,有些時(shí)候一時(shí)線(xiàn)索不夠、難以解決的不太重要的問(wèn)題,可以在代碼層次加以防護(hù),防止產(chǎn)生更大影響,然后通過(guò)追加日志,以確保下次相應(yīng)問(wèn)題觸發(fā)時(shí),能捕捉到足夠有用的信息。
以上是本人處理的主要方法,希望對(duì)你有用。
歡迎大家留言交流。