個人一次十四小時極限黑盒調試經歷

十四小時極限調試挑戰 - 流水帳


背景

本文以流水線的方式記錄了一次難以忘懷的調試經歷。模塊化

過程

2019-10-29 13:02 分加密

接到緊急報告,某商業軟件在解析特定數據格式時候出現故障,須要當即解決。而沒法聯繫到供應商。debug

2019-10-29 13:20 分調試

開始進行問題復現。日誌

2019-10-29 14:26 分源碼

問題復現成功,打開debug級別日誌,但願從日誌中找出線索。編譯

2019-10-29 14:40 分軟件

日誌沒有記錄到更有效的信息,開始對程序安裝目錄進行結構分析。日誌分析

2019-10-29 15:30 分bug

基本完成對程序的分析,主要使用Java和so進行連接,因爲程序是很是模塊化的,基本能夠定位到某幾個Jar包有Bug.

2019-10-29 15:50 分

從Jar包的名稱中發如今一個關鍵位置多是引入了一個開源庫,經過Google 找到該項目源碼,但願經過修改這個庫以免這個Bug。

2019-10-29 17:10 分

第一個版本的修改版完成,嘗試替換,解決了必定的問題,縮小了問題發生概率,但仍舊沒有實際的進展。

2019-10-29 19:00 分

吃了個晚餐。

2019-10-29 19:20 分

通過兩個小時的奮戰,基本宣告這個方案失敗,開始預備嘗試對某個私有內部JAR包進行修改的方案。

2019-10-29 21:30 分

經過JBE將JAR包進行反編譯,開始嘗試直接修改Class文件。

2019-10-29 22:30 分

完成了Class文件修改版,進行替換後沒法正常工做,形成了運行時的直接崩潰。

2019-10-29 22:50 分

喝了一杯焦糖加濃美式。

2019-10-29 23:10 分

經過上一個步驟對Jar的反編譯已經發現源碼沒有進行加密與混淆,開始將整個JAR包進行反編譯獲得源代碼,而且直接將該程序的全部JAR包都歸入lib中,開始直接編譯。

2019-10-30 01:15 分

項目構成完成,解決了源代碼中的一些問題,對代碼進行非破壞性的增長日誌。上線一個版本。

2019-10-30 01:30 分

拿到更完整的日誌,進行日誌分析。對代碼進行保護性調整,進行了屢次Debug。

2019-10-30 02:20 分

基本宣告調試完成,進行完整驗證。在驗證過程當中,發現有部分邏輯遺漏。

2019-10-30 03:20 分

完成了最終版本,調試經過。

2019-10-30 03:30 分

正式投入使用,替代舊版程序。將整個問題Email復現給了供應商。

2019-10-30 04:00 分

記錄下來了此次可貴難得的經歷。

相關文章
相關標籤/搜索