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