adb pull data/anr/traces.txt
測試了華為p7(android 5.1.1)和榮耀v10(android 9),發現都能正常匯出。但是遇到華為mate10、mate10 pro 一直都匯出失敗。
adb: error: failed to stat remote object 'data/anr/traces.txt': no such file or directory
查了些資料,發現廠商有對這塊做優化。以前anr一直放在traces檔案中,多次出現有覆蓋的問題。高版本廠商做了優化,會根據時間戳分別生成乙個檔案,打包匯出。
1.檢視是否存在traces。
adb shell
cd data/anr
ls -a //列出所有檔案
這時嘗試用命令匯出:
adb: error: failed to copy 'data/anr/anr_2019-01-30-13-35-18-005' to '.\anr_2019-01-30-13-35-18-005': remote open failed: permission denied
提示許可權拒絕,我們無法想之前一樣匯出anr目錄下某個檔案。
解決方案:
此命令會匯出乙個zip壓縮包,解壓後在fs/data/anr目錄下就可以看到traces檔案了。
產生anr的情況有:
(1)activity按鍵或觸控事件在特定時間內無響應(5s)
(2)service在特定時間內無法處理完成(20s)
(3)broadcastreceiver在特定時間內無法處理完成(10s)
開發中主要多發在第一種情況,在主線程做了耗時操作,導致堵塞,然後觸發點選事件,無法及時響應,開發中複雜的業務可以轉到子執行緒去實現,主線程盡量做ui操作。
提供乙個anr的除錯**:
@override
public void onclick(view v) catch (interruptedexception e)
l.i(inittag(), "結束阻塞主線程");
} else if (i == r.id.btn_two)
}
點選第乙個按鈕後,立刻多次觸發第二個按鈕,就會有anr了。
**:
記一次驚險的檔案恢復
之前就被很多前輩的文章提醒過 在linux下操作檔案,一定要小心誤刪,小心誤覆蓋!我也一向是小心翼翼,rm指令用的時候絕對要看三遍才刪除。不過今天還是掉進坑里了。本來的操作只是需要在乙個白名單上新增兩個url,並且生成它對應的md5檔案告訴下游檔案有更新了。非常簡單的操作,我看這個目錄下本來也沒有備...
記一次的使用
將jsp拆分frame框架,因為採用了第一種方式,一直在考慮用jquery非同步請求獲取資料,總是但不到效果,終於在js寫吐的時候選擇了第二種方式。參考網上的使用,大多是下面這個樣子,如果涉及靜態頁面之間定位,是沒有問題的 href 為目標頁面 通過target定位到frame views main...
記一次除錯
這是我最近幾個月來遇到的最棘手的乙個問題 昨天花了4個小時找出第一層次的原因 這個糾結啊,本來和老婆說好準時下班回家吃飯的,結果被這個問題拖了老久。這是乙個gradle的plugin,用來resolve公司內部的dependency的,弄完了跑測試專案的,拋乙個npe,而且npe還不在自己的 裡面。...