查找bug的方法(随笔)
1.入(出)口推進法
這種查找方式一般用在查邏輯bug等問題,也是我認為最簡單,但是最根本的方法。首先要找到最開始的調(diào)用入口,在每一個調(diào)用的入口打印日志或者設(shè)置斷點,一步步向前推進查找代碼行走的軌跡,最終找到問題所在。出口,就是反過來推進,道理是一樣的。
2.異常分析法
這種就是根據(jù)錯誤日志分析故障,很多時候遇到故障直接把故障信息copy到百度,這種確實可以解決一部分問題,但是遇到很多問題,直接搜索是搜不到的,需要分析后查到根本原因,才能找到解決方案。
舉幾個例子:
(1)掛載的時候,提示這個錯誤:
amount: 文件系統(tǒng)類型錯誤、選項錯誤 ?上有壞超級塊、
? ? ? ?缺少代碼頁或助手程序,或其他錯誤
? ? ? ?(對某些文件系統(tǒng)(如 nfs、cifs) 您可能需要
? ? ? ?一款 /sbin/mount.<類型> 助手程序)
? ? ? ?有些情況下在 syslog 中可以找到一些有用信息- 請嘗試
? ? ? ?dmesg | tail ?這樣的命令看看。
從日志關(guān)鍵字 : 缺少代碼頁或助手程序,或其他錯誤 ? ?(對某些文件系統(tǒng)(如 nfs、cifs) 您可能需要 ?一款 /sbin/mount.<類型> 助手程序) ?推論出掛載需要安裝掛載客戶端,
所以根據(jù)系統(tǒng)的類型安裝對應(yīng)的掛載客戶端即可:
Redhat版本: ? yum install nfs-utils
CentOS版本:sudo apt-get install nfs-common
(2)docker 編譯java服務(wù)的時候,編譯到一半報錯:
FROM java:8 無法識別 unkown java
這個時候去網(wǎng)上搜,會發(fā)現(xiàn)相關(guān)的信息很少,不能解決我的問題,只能通過分析來查問題。
1.在代碼中搜索FROM java:8? 在dockerfile中找到了這個,然后想著java 8 對應(yīng)的應(yīng)該就是jdk1.8(之前有配置過jdk1.8)了,于是懷疑環(huán)境出問題了,就想著從配置docker java環(huán)境入手,但是還是不能解決。
2.后通過查詢From了解到是和鏡像有關(guān),測試把java:8換成了java:7或者java:9或centos:7都可以,發(fā)現(xiàn)可以編譯通過,但是服務(wù)器允許會報錯,因為代碼sdk用的是1.8版本,通過查詢docker鏡像查詢到有鏡像java:7和 java:9沒有鏡像java:8,就想到可能是被刪除了。
3.通過查詢docker 制作java 鏡像,重新制作了java鏡像,重新編譯后,問題果然得到了解決。
后續(xù)
總結(jié)
以上是生活随笔為你收集整理的查找bug的方法(随笔)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝阔无线打印服务器,蓝阔打印服务器云打印
- 下一篇: 流程挖掘如何助力采购数字化转型?