『壹』 android——上線APP奔潰之後錯誤日誌的抓取
提供給老外的一個APP測試過程中出現異常,APP奔潰,千里之隔,時差有別,很絕望。。。只能再搞一個抓取日誌的功能分析問題所在,基於懶人思想,先查,歲配雹然後整合總結。有了下面的東西。
我是從這里搬過來的,之後只做一個保留文件處的小修改而已: https://blog.csdn.net/omnispace/article/details/79833862
感謝大佬!賣御感謝大佬!感乎帆謝大佬!
『貳』 如何獲得Android的崩潰日誌
如大改果你是用eclipse開發的話,在Window--》》show view--》》other--》》logcat。點擊OK就能有顯示log的窗口了。如果你是要追蹤上線的產畝羨品出現滾耐判的崩潰日誌的話可以去網上搜bugly獲取更多相關知識。
『叄』 android怎樣實時上傳崩潰日誌到伺服器
讓系統處理崩潰,然後把錯誤日誌上傳到伺服器並且服務只能運行2秒鍾,如果2秒鍾錯誤日誌沒有上傳到伺服器,那麼這個錯誤信息就不要了。然後再停止服務,在服務銷毀的時候同時銷毀進程。
核心代碼:
public int onStartCommand(Intent intent, int flags, int startId) { stopDelayed = intent.getLongExtra("Delayed", 2000); PackageName = intent.getStringExtra("PackageName"); expection = intent.getStringExtra("exception"); try { //這里上傳崩潰日誌 } catch (java.lang.Exception e) { e.printStackTrace(); } handler.postDelayed(new Runnable() { @Override public void run() {/* Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(PackageName); startActivity(LaunchIntent);*/ KillSelfService.this.stopSelf(); //android.os.Process.killProcess(android.os.Process.myPid()); } }, stopDelayed); return super.onStartCommand(intent, flags, startId);}
@Overridepublic void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy: "); android.os.Process.killProcess(android.os.Process.myPid());}
『肆』 如何獲得Android的崩潰日誌
已經做成sdk的形式,源碼已公開,源碼看不懂的請自行google。
如果想定製適應自己app的sdk請自行fork。
AndroidLogCollector
android
app崩潰日誌收集sdk 1.0
作者:賈博士
崩潰日誌收集方法:
1.LogCollector是lib包,在需要添加崩潰日誌sdk的工程中導入此包。
2.導入lib後,在自己的工程的AndroidManifest.xml文件中加入許可權:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
3.在自己的工程中重寫自己的application,在oncreate中加入
LogCollector.init(getApplicationContext(), UPLOAD_URL, params);
PS:重寫自己的application記得在Manifest注冊
參數:
1.Context
2.String UPLOAD_URL ,上傳地址url,支持http和https方式,post方法。
3.HttpParameters params ,自定義的類,用於post上傳其他參數。
說明:
發生崩潰後,日誌會保存在 /data/data/{your package name}/files/ 目錄下
日誌只有一個文件,多條數據日誌保存
日誌文件上傳成功後會自動刪除,上傳不成功則不刪除
日誌格式可以根據自己的需求在源碼中改動
http的post傳的數據也可自行修改
參考代碼:
public class MyApplication extends Application {
//post method , upload logfile url,replace your site . support http or https
private static final String UPLOAD_URL = "http://xxxxxxxx";
@Override
public void onCreate() {
super.onCreate();
//upload logfile , post params.
HttpParameters params = new HttpParameters();
params.add("key1", "value1");
params.add("key2", "value2");
params.add("key3", "value3");
//.......
//replace your key and value;
boolean isDebug = true;
//set debug mode , you can see debug log , and also you can get logfile in sdcard;
LogCollector.setDebugMode(isDebug);
LogCollector.init(getApplicationContext(), UPLOAD_URL, params);//params can be null
}
}
上傳日誌方法:
需要先在application中執行init,
然後在任何位置添加如下代碼:
LogCollector.upload(boolean isWifiOnly);
參數:
1.boolean isWifiOnly; true代表只在wifi情況下發送,false代表有網的情況下就發送(包括流量和wifi)
您可以在service,activity等位置的合適時機觸發,不會卡界面也不會影響性能。
參考代碼:
private void uploadLogFile(){
boolean isWifiOnly = true;//only wifi mode can upload
LogCollector.upload(isWifiOnly);//upload at the right time
}
調試:
在init之前調用
LogCollector.setDebugMode(boolean isDebug);
說明:
1.開啟調試後可以看到堆棧的log信息
2.同時可以在sd卡下的Android/data/{your package name}/Log/ 目錄下可以查看保存的崩潰log日誌
該目錄下的日誌不會自動刪除,請及時清空,避免佔用空間
『伍』 Android 通過logcat查看crash 或者anr日誌
在Android APP的測試過程中經常遇到crash和anr,開發人員習慣通過eclipse或者eclipse的ddms組件進行捕抓日誌,測試人員常通過在dos窗口下adb命令的方式來抓取日誌。前者的缺點是啟動時非常耗時,後者呢則每孝尺次都要寫命令也比較麻煩(需要截圖時也存在這個問題唯銀)。
crash可以在日誌巧山高中搜:FATAL 關鍵詞
anr搜:anr in關鍵詞
『陸』 如何獲得Android的崩潰日誌
每個android應用都是由一個Application和多個activity或者server構成.應用啟動時,會首先啟動Application.在Application的onCreate方法中調用
1Thread.(handler);
就可以捕獲導致應用崩潰的錯誤信息了.
首先應用要有讀寫sd卡許可權
『柒』 android 怎麼捕獲app異常閃退的日誌
1、通過集成第三方SDK,如網路統計、友盟統計等
2、發版時使用加固工具,他們也會收集錯誤日誌,如360加固
3、在程序中添加程序異常崩潰的捕捉代碼,保存到本地文件中。
『捌』 Android 各種log 的介紹
包含設備日誌,堆棧跟蹤和其他診斷信息,可幫助您查找和修復應用中的錯誤。
安卓bugreport主要用於分析手機的狀態。其包含: main log , kernel log ,cpuinfo等信息。bugreport是一個可執行文件,編譯後的路徑為system/bin/bugreport,源碼位於framework/native/cmds/bugreport。其核心在於啟動mpsys服務。bugreport同mpstate服務建立socket通信(建立連接20次,超時3min無數據等容錯)。連接之後,將接收到的數據定向到文件中。
因此我們看到的bugreport數據均來自mpstate。
bugreport通過socket與mpstate服務建立通信,在mpstate.cpp中的mpstate()方法完成核心功能。分別輸出: current log、 last log、 vm trace、 mpsys、 system info
其詳細內容主要有: 系統build及運行時長等信息、 內存和CPU進程的信息、 kernel log、 system log、 radio log、 event log 等等。實際來說,bugreport中顯示的大部分為信息,都有對應的命令方式可以獲取。bugreport只是作為一個在不打擾用戶的前提下執行的一套命令集合。
1). main_log 記錄手機android上層app以及framework相關活動的log,比如你寫的app列印的log,就在這裡面
2). events_log 主要是ActivityManager、powerManager等相關的log
3). kernel Log 驅動相關的log
Logcat是內置在Android系統中的一個可執行工具,用於轉儲系統消息日誌,其中包括設備引發錯誤時的堆棧追蹤以及從您的應用當使用 Log 類編寫的消息。可以在主機上通過adb logcat命令來查看模擬機上日誌信息。
Android tcpmp是命令行數據包捕獲實用程序。它可以捕獲來自您的Wi-Fi連接,蜂窩連接以及您在android設備上可能具有的任何其他網路連接的數據包
modem 是手機里負責搜網和sim卡數據操作底層模塊,每個手機都有,md log 用於分析掉網、掉話、無信號等問題
系統崩潰時留下的遺言,怎麼死的,死哪了,死的多慘。
當一個動態庫(native 程序)開始執行時,系統會注冊一些連接到 debuggerd 的 signal handlers,當系統 crash(崩潰) 的時候,會保存一個 tombstone 文件到/data/tombstones目錄下(Logcat中也會有相應的信息),文件的確就像墓碑一樣記錄了死亡了的進程的基本信息(例如進程的進程號,線程號),死亡的地址(在哪個地址上發生了 Crash),死亡時的現場是什麼樣的(記錄了一系列的堆棧調用信息)等等。
6. netlog 網路相關
看網路鏈接情況,抓取網路包等等
7. QXDM(the Qualcomm eXtensible Diagnostic Monitor)高通可擴展診斷監視器
該工具適用於擁有使用Qualcomm ASIC和試用硬體的設備的人,並允許他們測試,評估和潛在診斷其移動設備的RF性能問題。通常使用它來促進這些設備的產品開發。
使用該軟體,用戶可以查看他們的移動設備發出的所有信令消息,因為該軟體會生成它們的日誌。這些日誌也可以通過軟體進行注釋。可以將網路和電話參數的任何混合添加到屏幕,並且允許用戶在使用其參數時使用復雜的公式。該程序還實時生成大量統計數據,以便用戶可以更好地識別潛在的性能問題。用戶可以訪問Markov統計信息,Mux統計信息,RLP統計信息,塊錯誤率,移動性管理數據,尋呼和訪問統計信息,前向和反向鏈路統計信息等等。該程序還為用戶提供了攜帶型設備信號的圖形顯示。該程序與Windows操作系統兼容。
8. init Log(init進程log)
9. Crashlog(崩潰日誌)
『玖』 android 閃退日誌
先清除之前的日誌:adb logcat -c
操作閃退步驟後,輸出干凈消槐的閃退日誌:adb logcat -b crash >error.txt
adb bugreport > log.txt
搜索fatal exception 或者crash;
app出現anr時會在data/anr目錄下生成traces.txt文件
adb pull data/anr/traces.txt > anr_log.txt
traces.txt文件里存放設備所有app的anr日誌
打開日誌文件,搜索包名
查看手機的所有拿激友日誌
adb logcat
只獲取該應用的日誌
adb logcat | findstr 應用包名
開始抓取日誌並保存到D盤的crash.txt
adb logcat >D:\crash.txt
ctrl +C 停止抓取
ctrl +F 搜索 force finishing查看閃鉛槐退的日誌
https://blog.csdn.net/lan_yangbi/article/details/112031488
『拾』 android crash日誌怎麼分析
原始的方法都比較麻煩了,現在有很多的崩潰捕捉工具,可以都快速的定位崩潰堆棧詳情,同時日誌也會一並上報的,現在比較新的工具是Bugout,一些別工具還有bugly、bugtags和bugclos,你可以篩選一下,哪個適合你。