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