Advertisement

在Android Shell命令行中筛选adb logcat的日志方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文介绍了如何在Android设备上使用ADB Logcat工具通过Shell命令过滤和查看日志信息的方法,帮助开发者更高效地调试应用程序。 在Android开发过程中,调试日志对于理解程序运行状态至关重要,但海量的日志信息往往使得查找关键信息变得困难。本段落将详细介绍如何使用adb shell命令行工具中的logcat命令,结合grep等工具,有效地过滤并筛选出我们需要的日志内容,提高开发效率。 1. **只显示需要的输出(白名单)** 使用grep命令可以方便地过滤logcat输出。通过正则表达式匹配特定的字符串或tag,例如: - `adb logcat | grep MyApp` 显示包含MyApp的日志行。 - `adb logcat | grep -i myapp` 忽略大小写进行匹配。 - `adb logcat | grep --color=auto -i myapp` 高亮显示匹配的字符串。 对于更复杂的匹配,可以使用正则表达式,如匹配tag的特定部分,例如: - `adb logcat | grep ^..MyApp` 仅匹配tag以MyApp开头的日志。 - `adb logcat | grep ^E.MyApp` 仅显示Error级别且tag为MyApp的日志。 2. **过滤不需要的输出(黑名单)** 如果需要排除某些tag,只需在grep命令中添加-v选项,例如: - `adb logcat | grep -v ^(..MyApp|..MyActivity)` 过滤掉tag为MyApp或MyActivity的日志。 - `adb logcat | grep -vE ^(..MyApp|..MyActivity)` 使用egrep,无需转义符。 3. **显示同一个进程的所有输出** 当一个程序有多重tag时,可以获取所有属于同一进程(PID)的日志。这可以通过首先找出进程PID,然后将其作为grep的匹配项来实现。以下是一个简单的shell脚本示例: ```bash #!binbash packageName=$1 pid=$(adb shell ps | grep $packageName | awk {print $2}) adb logcat | grep --color=auto $pid ``` 脚本接收程序的Java包名为参数,然后打印对应进程的所有日志。 4. **从当前开始显示** 如果只想查看从清除缓存后开始的新日志,可以使用`adb logcat -c`清除缓存,然后执行`adb logcat`获取新的日志。 5. **过滤log文件** 分析保存在本地的log文件时,可以同样使用grep命令。例如,过滤文件`myapp.log`中tag为MyApp或MyActivity的日志,并将结果保存到`newmyapp.log`: ```bash cat myapp.log | grep ^..MyApp|^..MyActivity > newmyapp.log ``` 6. **logcat本身的过滤功能** 除了使用grep,logcat命令本身也提供了过滤功能,可以根据tag和优先级直接过滤。例如: - `adb logcat *:E MyApp:D` 显示Error级别的全局日志和Debug级别tag为MyApp的日志。 这些技巧不仅适用于日常开发,还适用于性能优化、bug定位等场景。熟练掌握这些方法,可以极大地提升Android开发中的日志分析效率。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Android Shelladb logcat
    优质
    本文介绍了如何在Android设备上使用ADB Logcat工具通过Shell命令过滤和查看日志信息的方法,帮助开发者更高效地调试应用程序。 在Android开发过程中,调试日志对于理解程序运行状态至关重要,但海量的日志信息往往使得查找关键信息变得困难。本段落将详细介绍如何使用adb shell命令行工具中的logcat命令,结合grep等工具,有效地过滤并筛选出我们需要的日志内容,提高开发效率。 1. **只显示需要的输出(白名单)** 使用grep命令可以方便地过滤logcat输出。通过正则表达式匹配特定的字符串或tag,例如: - `adb logcat | grep MyApp` 显示包含MyApp的日志行。 - `adb logcat | grep -i myapp` 忽略大小写进行匹配。 - `adb logcat | grep --color=auto -i myapp` 高亮显示匹配的字符串。 对于更复杂的匹配,可以使用正则表达式,如匹配tag的特定部分,例如: - `adb logcat | grep ^..MyApp` 仅匹配tag以MyApp开头的日志。 - `adb logcat | grep ^E.MyApp` 仅显示Error级别且tag为MyApp的日志。 2. **过滤不需要的输出(黑名单)** 如果需要排除某些tag,只需在grep命令中添加-v选项,例如: - `adb logcat | grep -v ^(..MyApp|..MyActivity)` 过滤掉tag为MyApp或MyActivity的日志。 - `adb logcat | grep -vE ^(..MyApp|..MyActivity)` 使用egrep,无需转义符。 3. **显示同一个进程的所有输出** 当一个程序有多重tag时,可以获取所有属于同一进程(PID)的日志。这可以通过首先找出进程PID,然后将其作为grep的匹配项来实现。以下是一个简单的shell脚本示例: ```bash #!binbash packageName=$1 pid=$(adb shell ps | grep $packageName | awk {print $2}) adb logcat | grep --color=auto $pid ``` 脚本接收程序的Java包名为参数,然后打印对应进程的所有日志。 4. **从当前开始显示** 如果只想查看从清除缓存后开始的新日志,可以使用`adb logcat -c`清除缓存,然后执行`adb logcat`获取新的日志。 5. **过滤log文件** 分析保存在本地的log文件时,可以同样使用grep命令。例如,过滤文件`myapp.log`中tag为MyApp或MyActivity的日志,并将结果保存到`newmyapp.log`: ```bash cat myapp.log | grep ^..MyApp|^..MyActivity > newmyapp.log ``` 6. **logcat本身的过滤功能** 除了使用grep,logcat命令本身也提供了过滤功能,可以根据tag和优先级直接过滤。例如: - `adb logcat *:E MyApp:D` 显示Error级别的全局日志和Debug级别tag为MyApp的日志。 这些技巧不仅适用于日常开发,还适用于性能优化、bug定位等场景。熟练掌握这些方法,可以极大地提升Android开发中的日志分析效率。
  • Android Studio Logcat 显示全部
    优质
    本文介绍了在Android Studio中显示Logcat窗口内所有日志信息的方法,帮助开发者避免使用过滤器时可能出现的日志丢失问题。 本段落主要介绍了如何在Android Studio的Logcat窗口中显示全部日志而不进行筛选或应用包名区分的方法,具有一定的参考价值,希望对大家有所帮助。
  • Android APK程序Adb shell
    优质
    本文介绍了如何在Android设备上通过ADB Shell命令与APK应用程序进行交互的方法和技巧。 APK程序可以通过Adb shell命令与高级语言进行调用交互。
  • Android ADB Shell大全
    优质
    《Android ADB Shell命令大全》是一份全面详实的手册,涵盖了ADB Shell中所有重要的命令和操作技巧,旨在帮助开发者和用户更高效地管理和调试安卓设备。 Android ADB Shell命令大全: 1. 显示系统中的所有Android平台:`android list targets` 2. 列出所有的AVD(模拟器):`android list avd` 3. 创建一个新的AVD(模拟器):`android create avd --name 名称 --target 平台编号` 4. 启动指定的模拟器: `emulator -avd 名称 [-skin 1280x800] (-sdcard ~/名称.img)` 5. 删除一个特定的AVD(模拟器):`android delete avd --name 名称` 6. 创建SD卡映像文件:`mksdcard 1024M ~/名称.img` 7. 查找AVD的位置: - Linux: `~/.android/avd` - Windows: `C:\Documents and Settings\Administrator\.android\avd` 8. 启动DDMS工具:`ddms` 9. 显示当前运行的所有模拟器:`adb devices` 10. 对特定的模拟器执行命令:`adb -s 模拟器编号 命令` 11. 安装应用程序到设备上: `adb install -r 应用程序.apk` 12. 从模拟器中提取文件至本地机器:`adb pull <远程路径> <本地路径>` 13. 将文件写入模拟器或设备内存储空间:`adb push <本地路径> <远程路径>` 14. 进入到Android Shell模式执行命令: `adb shell` 15. 启动SDK管理工具、文档查看器及示例下载程序:`android` 16. 卸载应用程序包并重新安装: 1. `adb shell cd data/app rm apk包 exit` 2. `adb uninstall apk包的主包名` 3. `adb install -r apk包` 17. 查看ADB命令的帮助信息:`adb help` 18. 在终端中查看LOG日志:`adb logcat -s 标签名` 19. ADB Shell后面的命令主要来自于Android源码的以下目录: - 源代码\system\core\toolbox - 源代码\frameworks\base\cmds 20. 删除系统应用: 1. `adb remount`(重新挂载系统分区,使它可写) 2. `adb shell cd system/app rm *.apk` 21. 获取超级用户权限:`adb root` 22. 启动Activity: - 命令格式:`adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)` 23. 发布端口至设备或模拟器: `adb forward tcp:5555 tcp:8000` 24. 文件复制操作: - 向设备/模拟器推送文件:`adb push <源> <目标>` - 从设备/模拟器拉取文件:`adb pull <远程位置> <本地路径>` 25. 查找当前运行的实例: `adb devices` 26. 获取Bug报告:`adb bugreport` 27. 记录无线通讯日志: 命令行执行如下命令记录特定类别(如无线电)的日志信息:`adb shell logcat -b radio` 28. 收集设备的ID和序列号 1. `adb get-product` 2. `adb get-serialno` 29. 使用SQLite3访问数据库: 进入系统指定文件夹,列出并操作其中的内容:`adb shell sqlite3 #cd system/sd/data //进入系统内特定目录; #ls //显示当前目录内容;#rm -r xxx//删除名为xxx的整个文件夹及其内部所有子项; #rm xxx //仅移除名称为xxx的文件; #rmdir xxx 删除空文件夹`
  • Logcatadb shell批处理脚本示例
    优质
    简介:本文提供了一个实用的批处理脚本示例,用于自动化Android设备上的Logcat日志收集及ADB Shell命令执行过程,帮助开发者提高工作效率。 通过使用bat脚本打包logcat、adb shell语句等相关代码,并解决了进入shell后后续代码无法执行的问题。
  • AndroidADB Shell源代码分析
    优质
    本文深入探讨了在Android系统中通过ADB Shell发送命令时底层实现机制及源码细节,旨在帮助开发者理解其内部工作原理。 Android执行ADB shell命令的源码,亲测可用!
  • MTKADB常用
    优质
    本文介绍了MTK手机的日志查看方法及ADB工具的基本使用技巧,帮助开发者和用户诊断设备问题、优化系统性能。 本段落档主要讲解了如何抓取MTK log以及ADB命令的使用方法。
  • AndroidJava及通过Java代码解析Shell
    优质
    本文介绍了如何在Android设备上执行Java命令,并提供了使用Java编程语言来解析Shell命令的具体方法和示例。 本段落介绍在Android环境中执行Java命令的方法以及如何通过Java代码来解析并执行shell命令,供需要的朋友学习参考。
  • ADB Logcat支持内核打印
    优质
    本工具为开发者提供了一项新功能,能够直接通过ADB Logcat输出内核级别的日志信息,便于深入分析和调试Android系统底层问题。 替换system/core/logcat目录可以支持通过adb logcat命令获取内核打印信息。
  • ADB Shell大全
    优质
    《ADB Shell命令大全》是一份全面总结Android设备调试桥(ADB)Shell命令的手册,涵盖常用及高级指令,帮助开发者和用户高效管理与操作安卓系统。 1. 开发过程中实用的各种ADB命令大全,并附带实例讲解。 2. 一些不常见但非常有用的ADB shell命令。