麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Android > 正文

Android系統開發中log的使用方法及簡單的原理

2020-04-11 12:32:22
字體:
來源:轉載
供稿:網友
在程序開發過程中,LOG是廣泛使用的用來記錄程序執行過程的機制,它既可以用于程序調試,也可以用于產品運營中的事件記錄。在Android系統中,提供了簡單、便利的LOG機制,開發人員可以方便地使用。在平時開發過程中經常需要與log打交道,所以很有必要了解log的使用方法及簡單的原理。

1、linux內核的log輸出
在標準的linux內核開發過程中,使用printk,這是一個與printf輸出打印齊名的函數,同樣提供格式化輸出功能,只是其有
打印級別且將信息保存到/proc/kmsg日志中,使用cat命令查看其信息[cat/proc/kmsg]
復制代碼 代碼如下:

<SPANstyle="COLOR:#003333;FONT-SIZE:14px">#defineKERN_EMERG"<0>"/*systemisunusable*/
#defineKERN_ALERT"<1>"/*actionmustbetakenimmediately*/
#defineKERN_CRIT"<2>"/*criticalconditions*/
#deinfeKERN_ERR"<3>"/*errorconditions*/
#deinfeKERN_WARNING"<4>"/*warningconditions*/
#deinfeKERN_NOTICE"<5>"/*normalbutsignificantcondition*/
#deinfeKERN_INFO"<6>"/*informational*/
#deinfeKERN_DEBUG"<7>"/*debug-levelmessages*/</SPAN>

2、android中log輸出
Android系統在用戶空間中提供了輕量級的logger日志系統,它是在內核中實現的一種設備驅動,與用戶空間的logcat工具配合使用能夠方便地跟蹤調試程序。
Android系統中的C/C++日志接口是通過宏來使用的。在system/core/include/android/log.h定義了日志的級別:
/*
*Androidlogpriorityvalues,inascendingpriorityorder.
*/
typedefenumandroid_LogPriority{
ANDROID_LOG_UNKNOWN=0,
ANDROID_LOG_DEFAULT,/*onlyforSetMinPriority()*/
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT,/*onlyforSetMinPriority();mustbelast*/
}android_LogPriority;

為了使用方便,在system/core/include/cutils/log.h定義了相對應的宏:
#defineLOGV(...)((void)LOG(LOG_VERBOSE,LOG_TAG,__VA_ARGS__))
#defineLOGD(...)((void)LOG(LOG_DEBUG,LOG_TAG,__VA_ARGS__))
#defineLOGI(...)((void)LOG(LOG_INFO,LOG_TAG,__VA_ARGS__))
#defineLOGW(...)((void)LOG(LOG_WARN,LOG_TAG,__VA_ARGS__))
#defineLOGE(...)((void)LOG(LOG_ERROR,LOG_TAG,__VA_ARGS__))
因為如果需要使用log輸出,包含其頭文件:#include<cutils/log.h>并link其動態庫:liblog.so即可
#defineLOG_TAG"XX_LOG_TAG"http://這里可以定義其輸出的TAG
#include<cutils/log.h>
JAVA層打印:
importandroid.util.Log;
privatestaticfinalStringTAG="XX_LOG_TAG";
Log.e(TAG,"ThisistheerrorlogprintedbyLog.iinandroiduserspace.");

3、盒子上如何獲取log
a、進入shell獲取log
adbkill-server
adbconnectdest-ip
adbshell【登錄shell】
mount-oremount/system/system【改變權限】
logcat>>1.log
命令行輸入CTRL+C回到cmd命令行,adbpullpath/1.log
b、直接在cmd命令行獲取log
adbconnect連上后;
adbshell
adblogcat>>path/1.log
操作完畢后
命令行輸入CTRL+C回到cmd命令行,adbpullpath/1.log
c、在terminal終端直接輸出log
回車切到shell
logcat[此時即可看到打印]

4、Eclipse環境下運行(安裝了Android插件),那么直接可以在Eclipse就可以查看了
 

5、常用技巧
1、logcat中會打印【輸出級別+LOG_TAG名字+進程字+打印的信息】可以充分利用這些信息分析問題
I/SystemServer(939):ActivityManager
I/ActivityManager(939):Memoryclass:96
E/AndroidRuntime(939):ErrorreportingWTF
第一列由Log.i(e/w..決定)或者LOGI/LOGE/LOGW...
第二列由LOG_TAG/TAG(JAVA)中決定,可以對于同一組模塊前相同的前綴[xxx]funtion這種命名
第三列是系統進程號getpid()這值,打印線程值pthread_slef()

最后的就是自行增加的打印信息
2、調效效率或者執行時間
1、建議重點的打印增加前綴,方便查找。以[######]
2、直接利用logcat輸出時間,調試執行速度,分析效率
logcat-vtime【Displaythedate,invocationtime,priority/tag,andPIDoftheoriginatingprocess.】
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人精品免费看 | www.成人免费视频 | 午夜爱爱福利 | 国产精品美女久久久久久不卡 | 欧美高清在线精品一区二区不卡 | 日本看片一区二区三区高清 | 特黄一区二区三区 | 国产精品欧美久久久久一区二区 | 欧美1—12sexvideos| 国产一级一区 | 国产精品久久二区 | 在线观看免费毛片视频 | 久久精品男人 | 国产999精品久久久久 | 成人wxx视频免费 | 久久经典国产视频 | 精品国产乱码一区二区三区四区 | 国产韩国精品一区二区三区久久 | 欧美久久一区 | 日本不卡一二三区 | 宅男噜噜噜66国产免费观看 | 黄视频免费在线 | 49vv看片免费 | 国产精品av久久久久久久久久 | 二区三区四区视频 | 欧美成年人在线视频 | 亚洲av一级毛片特黄大片 | 亚洲成人福利在线观看 | 制服丝袜日日夜夜 | 日韩在线欧美在线 | 91九色精品国产 | 一级在线观看视频 | 亚洲成人免费电影 | 久久久久电影网站 | 国产精品久久久久久久久粉嫩 | av影院在线播放 | 久久久国产视频 | 天堂成人国产精品一区 | 国产噜噜噜 | 毛片在哪看 | 国产午夜精品久久久久 |