Ronny 's Blog
坚持!
Toggle navigation
Ronny 's Blog
Home
About Me
Archives
Tags
46--logcat的使用大全(自我总结)
2020-04-15 17:24:15
363
0
0
haiyang
logcat命令参数 |参数 |描述 | |:--:|:--| |-b|<buffer> 加载一个可使用的日志缓冲区供查看,比如event和radio。默认值是main| |-c|清除缓冲区中的全部日志并退出(清除完后可以使用-g查看缓冲区)| |-d|将缓冲区的log转存到屏幕中然后退出| |`-f <filename>`| 将log输出到指定的文件中<文件名>.默认为标准输出(stdout)| |-g|打印日志缓冲区的大小并退出| |`-n <count>` | 设置日志的最大数目<count>,默认值是4,需要和-r选项一起使用| |`-r <kbytes>`|每`<kbytes>`时输出日志,默认值是16,需要和-f选项一起使用| |-s|设置过滤器| |-v <format>|设置输出格式的日志消息。默认是短暂的格式。支持的格式列表| > 一般长时间输出log的话建议-f,-n,-r三个参数连用,这样当一个文件日志输出满了之后可以马上在另一个中进行输出 ```shell //将缓冲区的log打印到屏幕并退出 adb logcat -d //清除缓冲区log(testCase运行前可以先清除一下) adb logcat -c //打印缓冲区大小并退出 adb logcat -g //输出log logcat -r 10000 -v time -f /cache/log/dlog/dlog.log -n 5 ``` ## 1、logcat -b选项过滤 在Android中不同的log写到不同的设备中,共有`/dev/log/system, /dev/log/main, /dev/log/radio, /dev/log/events`四中类型。其中默认Log.v等写入/dev/log/main中。Slog写入/dev/log/system中。 我们在使用logcat 抓去日至的时候, 可以指定buffer,来请求不同的环形缓冲区 (‘main’, ‘system’, ‘radio’, ‘events’,默认为”-b main system”),因为android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区: `main` — 查看主缓冲区 (默认缓冲区) `radio` — 查看包含在无线/电话相关的缓冲区消息 `events` — 查看事件相关的消息 adb logcat -b eg: ``` #使用logcat -v threadtime -b events|grep boot查看开机各阶段的时间,看看是否有优化空间 130|root@Hi3798MV200H:/ # logcat -v threadtime -b events|grep boot 01-01 08:00:00.817 1598 1598 I boot_progress_start: 3917 01-01 08:00:01.637 1598 1598 I boot_progress_preload_start: 4737 09-16 10:15:09.645 1598 1598 I boot_progress_preload_end: 7956 09-16 10:15:09.823 2123 2123 I boot_progress_system_run: 8135 09-16 10:15:10.138 2123 2123 I boot_progress_pms_start: 8450 09-16 10:15:10.221 2123 2123 I boot_progress_pms_system_scan_start: 8533 09-16 10:15:11.048 2123 2123 I boot_progress_pms_data_scan_start: 9360 09-16 10:15:11.054 2123 2123 I boot_progress_pms_scan_end: 9366 09-16 10:15:11.084 2123 2123 I boot_progress_pms_ready: 9395 09-16 10:15:12.462 2123 2123 I boot_progress_ams_ready: 10774 09-16 10:15:18.349 2123 2142 I boot_progress_enable_screen: 16660 ``` #抓取各阶段时间节点 platform/android/frameworks/base/services/core/java/com/android/server/SystemService.java 定义: ``` /* * Boot Phases */ public static final int PHASE_WAIT_FOR_DEFAULT_DISPLAY = 100; // maybe should be a dependency? /** * After receiving this boot phase, services can obtain lock settings data. */ public static final int PHASE_LOCK_SETTINGS_READY = 480; /** * After receiving this boot phase, services can safely call into core system services * such as the PowerManager or PackageManager. */ public static final int PHASE_SYSTEM_SERVICES_READY = 500; /** * After receiving this boot phase, services can broadcast Intents. */ public static final int PHASE_ACTIVITY_MANAGER_READY = 550; /** * After receiving this boot phase, services can start/bind to third party apps. * Apps will be able to make Binder calls into services at this point. */ public static final int PHASE_THIRD_PARTY_APPS_CAN_START = 600; /** * After receiving this boot phase, services can allow user interaction with the device. * This phase occurs when boot has completed and the home application has started. * System services may prefer to listen to this phase rather than registering a * broadcast receiver for ACTION_BOOT_COMPLETED to reduce overall latency. */ public static final int PHASE_BOOT_COMPLETED = 1000; ``` platform/android/frameworks/base/services/java/com/android/server/SystemServer.java 使用 ``` 130|root@Hi3798MV200H:/ # logcat -v threadtime | grep -iE "Starting phase" 09-16 10:15:10.111 2123 2123 I SystemServiceManager: Starting phase 100 09-16 10:15:12.277 2123 2123 I SystemServiceManager: Starting phase 480 09-16 10:15:12.284 2123 2123 I SystemServiceManager: Starting phase 500 09-16 10:15:12.465 2123 2123 I SystemServiceManager: Starting phase 550 09-16 10:15:13.024 2123 2123 I SystemServiceManager: Starting phase 600 09-16 10:15:19.182 2123 2147 I SystemServiceManager: Starting phase 1000 ``` # 2、logcat -v time 打印时间戳同时grep多个条件 `logcat -v time | grep -iE "aaa|bbb|ccc"` logcat -v threadtime | grep -vE "bt_vendor_usb|HI_TUNER|drv_tuner|bt_hci_bdroid|DtvCaLTUtiPorting|telink|bt-|SETUP_BluetoothControllerScan" 排除bt_vendor_usb和bt_hci_bdroid,打印时间线程 # 3、logcat -v threadtime 打印进程号线程号和时间 # 4、编译log输出到文件,查看编译error等 `./build.sh 2>&1 | tee build1.log` //编译整个系统 `mm 2>&1 | tee build2.log` //编译某个module
Pre:
56--向Android SDK中添加自定义的库 (Addon)
Next:
04--制作自己的签名key,以及不同keytype的签名方法
0
likes
363
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
我的网站不支持评论,拒绝网络暴力,不造谣、不信谣、不传谣,传递正能量。
0
comments
More...
Table of content