記一次ANR檔案的匯出

2022-01-28 17:55:10 字數 1377 閱讀 1397

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還不在自己的 裡面。...