記一次慘痛的除錯經歷

2021-09-27 02:40:24 字數 1314 閱讀 1424

背景:

在處理乙個重新命名操作時,需要將檔案以指定的名稱存到指定的目錄下,同時將原目錄下的相關檔案全部刪除;

問題:能夠將原始檔重新命名,分片mp4的形式能夠將整個目錄刪除,但以整段mp4刪除時,始終無法刪除對應的.property檔案;

解決經歷:

1. 在xcode下模擬,始終是不會出現任務刪除不掉問題;

2. 改用android studio真機除錯,被aar編譯打包過程搞瘋,編一次五分鐘,還不一定替換成功,到後面搞到心態蹦了;

3. leader建議使用root手機替換so,替換過程變成30s,效率成功率大大提公升;

4. 使用rename,unlink,access的各種組合排查得到乙個小結論,

a. 由於心態問題,導致出現了很多失誤,rename引數出錯,反覆補充修改日誌,對驗證過程中的細節不關注....

b. 在經歷對property檔案access/rename/remove/unlink各種嘗試後,由於驗證方法有問題,走了不少彎路;

c. 對比老版本邏輯,老版本對property無處理,無法參考;

c. 後經點撥,懷疑property檔案許可權和資料檔案不一致;但檢視資料檔案的許可權,都是可讀可寫,屬性一致,從理論上說,兩者並不差別,所有操作都一致;  這個很重要,提供了一條可以對比的思路;

d. 經過對檔案和property的修改,逐步發現了rename引數傳錯問題;

e. rename名稱為property_tmp返回成功之後,依然無法刪除property檔案,但此時本地存在的名稱已經變成property;

f. 靈光一閃,只進行重新命名,不對重新命名之後的進行刪除,測試結果發現本地同事存在property和property_tmp檔案!!!刪不掉原因很明顯了,在刪除之後又重新生成了property檔案,並不是刪除不成功!!!!

g. 仔細檢查所有可能生成檔案的地方,bingo,由於程式bug,有些任務重新建立了,檢測到檔案之前已經移動過,直接return返回了,導致中間生成的property檔案無處理;

h. 通過對return時也加入對property的刪除處理,問題解決,使用remove、unlink都可以解決!!!

問題經過無數次嘗試,發現自己邏輯上一些漏洞,過於專注於結果,而忽略從巨集觀角度去看待問題;

引以為戒,加強解決問題的能力;

另外一處同樣的經歷:

背景: 在列印某行日誌時,乙個變數值在列印前後發生了改變,確認是單執行緒訪問,使用臨時變數依舊有改問題;

原因:在檔案的其他處,乙個變數的型別列印出現了問題,導致其結果影響到了後續列印,而並不是該行列印出現的問題;

解決方法:可以將日誌輸出改用printf,系統會提示所有列印的警告問題,將其修復;

jQuery選擇器 (記一次慘痛的經歷)

id id選擇器 div 元素選擇器 classname 類選擇器 classname,classname1,id1 組合選擇器 id classname 子元素選擇器 id classname 後代元素選擇器 id classname 緊鄰下乙個元素選擇器 id classname 兄弟元素選擇器...

記一次面試經歷

今早七點半的巴士從中山趕到廣州面試php開發助理,以前面的都是十來人 幾十人的小公司,不少還是培訓公司,坑的一逼!這次的公司不錯,比較正規,好歹上百人了,只是筆試題做得一般,題目有的雖有學過,但忘了,好吧!這就是沒準備充分的緣故!下面羅列下我還記得的題目 有些漏了就沒辦法了 之後hr面試聊了下,雖然...

記一次重構經歷

起因 最近因為公司內部對各個業務線的使用者業務進行統一剝離,形成使用者中心,所有使用者相關的業務和資料都落地到使用者中心,各個業務線以rpc的的形式依賴使用者中心的服務。結果 因為我的疏忽,造成了兩個bug沒有被測試出來。總結改進 這兩個bug的產生的原因都是因為我錯誤地估計了回歸測試的範圍,我的想...