adb logcat 命令

404 阅读4分钟

输出过滤日志

adb logcat | grep -E "xxxxxxx"

本地maven仓库地址

open .m2/repository/

打开schema

adb shell am start "alipays://platformapi/startapp?appId=21000561"

输出支付宝的hprof文件,分析内存泄漏问题

  • 输出支付宝进程号

adb shell ps | grep com.eg.android.AlipayGphone

  • 输出支付宝的hprof文件

adb shell am dumpheap xxxxxx /data/local/tmp/myleakcanaryheapdump.hprof

  • 把hprof传到mac桌面

adb pull /data/local/tmp/myleakcanaryheapdump.hprof ~/Desktop

输出Activity堆栈

adb shell dumpsys activity activities | grep ActivityRecord | grep Hist

查看某应用的版本号

adb shell dumpsys package com.eg.android.AlipayGphone | findstr versionCode

adb shell "dumpsys package com.eg.android.AlipayGphone | grep version"

输出当前堆栈里的所有的activity

adb shell dumpsys activity activities | grep ActivityRecord | grep Hist

获取density

adb shell wm density

输出进程号

adb shell ps | grep $com.yunos.fastdriver | awk '{print $2}'

过滤进程的log

adb logcat | grep --color=auto pid

packageName=$1

pid=adb shell ps | grep $packageName | awk '{print $2}'

adb logcat | grep --color=auto $pid

blog.csdn.net/soslinken/a…

解析 adb logcat 的帮助信息

停止方法:  adb shell kill -9 <logcat_pid>    
其中logcat_pid 通过 如下命令获取

adb shell ps | grep logcat           # linux 平台
adb shell ps | findstr "logcat"    #Windows平台

adb logcat 命令格式: adb logcat [选项] [过滤项], 其中 选项 和 过滤项 在 中括号 [] 中, 说明这是可选的;

选项解析

选项解析:

-- "-s"选项: 设置输出日志的标签, 只显示该标签的日志;

-- "-f"选项: 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;

-- "-r"选项: 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;

-- "-n"选项: 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;

-- "-v"选项: 设置日志的输出格式, 注意只能设置一项;

-- "-c"选项: 清空所有的日志缓存信息;

-- "-d"选项: 将缓存的日志输出到屏幕上, 并且不会阻塞;

-- "-t"选项: 输出最近的几行日志, 输出完退出, 不阻塞;

-- "-g"选项: 查看日志缓冲区信息;

-- "-b"选项: 加载一个日志缓冲区, 默认是 main, 下面详解;

-- "-B"选项: 以二进制形式输出日志;

输出指定标签内容:

--"-s"选项: 设置默认的过滤器, 如 我们想要输出 "System.out" 标签的信息, 就可以使用adb logcat -s System.out命令;

输出日志信息到文件:

-- "-f"选项: 该选向后面跟着输入日志的文件, 使用adb logcat -f /sdcard/log.txt命令, 注意这个log文件是输出到手机上,需要指定合适的路径。

指定 logcat 的日志输出格式:

-- "brief"格式: 这是默认的日志格式 " 优先级 / 标签 (进程ID) : 日志信息 " , 使用adb logcat -v prief命令;

-- "process"格式: " 优先级 (进程ID) : 日志信息 " , 使用adb logcat -v process 命令;

-- "tag"格式: " 优先级 / 标签 : 日志信息" , 使用adb logcat -v tag命令;

-- "thread"格式: " 优先级 ( 进程ID : 线程ID) 标签 : 日志内容 " , 使用adb logcat -v tag命令;

-- "raw"格式: 只输出日志信息, 不附加任何其他 信息, 如 优先级 标签等, 使用adb logcat -v raw命令;

-- "time"格式: "日期 时间 优先级 / 标签 (进程ID) : 进程名称 : 日志信息 " , 使用adb logcat -v time命令;

-- "long"格式: " [ 日期 时间 进程ID : 线程ID 优先级 / 标签] 日志信息 " , 输出以上提到的所有的头信息, 使用adb logcat -v long命令;

清空日志缓存信息: 使用adb logcat -c命令, 可以将之前的日志信息清空, 重新开始输出日志信息;

将缓存日志输出: 使用adb logcat -d命令, 输出命令, 之后推出命令, 不会进行阻塞;

输出最近的日志: 使用adb logcat -t 5命令, 可以输出最近的5行日志, 并且不会阻塞;

查看日志缓冲区信息: 使用adb logcat -g命令;

加载日志缓冲区: 使用adb logcat -b 缓冲区类型命令;

--Android中的日志缓冲区:

system缓冲区 - 与系统相关的日志信息,

radio缓冲区 - 广播电话相关的日志信息,

events缓冲区 - 事件相关的日志信息,

main缓冲区 - 默认的缓冲区;

过滤项解析

过滤项格式: [:priority] , 标签:日志等级, 默认的日志过滤项是 " *:I " ;