Android Logcat&debug实用技巧

2023-10-29

logcat 作为我们最常用的调试手段,相信大家都不会陌生。这里总结一下,在使用Logcat过程中,常用的一些debug技巧,目的是为了快速有效的帮助找到并解决问题。

先来看一看Logcat打印结构:
在这里插入图片描述

常用
logcat -v threadtime //打印出线程时间
logcat -v threadtime -s AndroidRuntime  
logcat -s AcitivityManager
logcat -s PackageManager
logcat -s PowerManagerService
logcat *:w //查看warning以上的log
打印该进程的信息
logcat | grep (4594)pid

通常我们无需关注其他进程的打印,只想看到本进程出现的问题

快速定位crash
logcat -b crash

这个使用的频率非常高,可以快速的帮我们找到系统在哪里挂掉

这里再补充一条特别有效的debug技巧:

  • java代码中打印堆栈
RuntimeException here = new RuntimeException("here");
                here.fillInStackTrace();
Slog.i(TAG_WM, "enableScreenAfterBoot: mDisplayEnabled=" + mDisplayEnabled
                        + " mForceDisplayEnabled=" + mForceDisplayEnabled
                        + " mShowingBootMessages=" + mShowingBootMessages
                        + " mSystemBooted=" + mSystemBooted, here);
  • c++代码中打印堆栈
#include <utils/CallStack.h>
android::CallStack stack;
stack.update();
android::String8 strtemp = stack.toString("");
ALOGD("\t%s", strtemp.string());
logcat -b events

查看acitity 生命周期
logcat -b events | grep -E “wm_|am_”
查看开机关键节点
logcat -b events|grep boot

dmesg

查看kernel 的打印信息
有些时候,kernel 打印,默认是关闭的,在启动参数里面设置了 quiet

init=/init console=ttyS0,115200 no_console_suspend earlycon=aml-uart,0xff803000 "\
			"ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 raid=noautodetect quiet
shell 脚本如何调试

通常我们在开机启动的服务脚本里面的打印是不会输出的
通常的做法是通过输出到文件,然后查看文件是否存在,判断这个脚本有没有执行。

function fun_preinstall()
{
	if [ ! -e /data/funsys.notfirstrun ]; then
		echo "do preinstall job"
		/system/bin/cmd package preinstall /vendor/preinstall
		touch /data/funsys.notfirstrun
		echo "preinstall ok"
	fi
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Logcat&debug实用技巧 的相关文章

  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • Android 后台服务示例,具有交互式调用方法

    我不是 Android 方面的专家 我正在寻找一个 Android 应用程序的示例 该应用程序使用一个服务 其中有真正的功能方法 或者换句话说 一个服务可以用来做什么 我们什么时候需要它 超越简单的东西服务举例 我确信您渴望获得一些工作代码
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 欧洲中部时间 14 日 3 月 30 日星期五 00:00:00 至 日/月/年

    我尝试解析格式日期Fri Mar 30 00 00 00 CET 14至 日 月 年 这是我的代码 SimpleDateFormat formatter new SimpleDateFormat dd MM yyyy System out
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • 如何在 Viewpager 中禁用预加载下一页? [复制]

    这个问题在这里已经有答案了 如何在 Viewpager 中禁用页面预加载 I tried viewPager setOffscreenPageLimit 0 但它不起作用 用这个viewPager setOffscreenPageLimit
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s
  • 带有 Maven Wrapper 的 Java 17 导致无法识别的 VM 选项“MaxPermSize=512m”

    I use OpenJDK 17 https jdk java net 17 使用 Maven Wrapper 3 8 2 从春季初始化 https start spring io Maven项目 JAR打包 Java 17 Spring

随机推荐

  • [从零学习汇编语言] - 转移指令进阶

    文章目录 前言 回顾 1 转移指令原理 2 已接触过的操作符 3 寄存器回顾 通用数据处理寄存器 指针寄存器 变址寄存器 段地址寄存器 其他寄存器 一 ret及retf 1 1 ret指令 1 2 retf指令 1 3 小练习 二 Call
  • Clannad【2018四川省赛】【AC自动机 + DP】

    题目链接 第十届四川省赛C题 挺好的一道题 就是要做一个last优化 每次的last要返回到之前的有值节点 也就是单词的尾的对应节点 然后就不会超时了 呜呜呜 之前一直超时 以为是初始化的memset 问题 以前被卡过memset 然后发现
  • 【cdk的使用】C语言 一个仅用200行代码实现的logger系统 使用

    Github地址 https github com wujin1989 cdk 经常有人说 一个好的代码 不需要记录太多的log 确实 我信了 这也导致cdk也是基于这点出发的 所以cdk的logger系统很简单 仅仅200行左右代码 但是
  • [转]新一代 Linux 文件系统 btrfs 简介

    刘 明 ovis poly sina com 软件工程师 上海交通大学电子与通信工程系 2009 年 8 月 20 日 Btrfs 被称为是下一代 Linux 文件系统 近年来 ext2 3 遇到越来越多的扩展性问题 在期待 ext4 的同
  • 网编(20):UDP传输数据经常遇到的问题

    相对于TCP 协议的程序设计 UDP 协议的程序虽然程序设计的环节要少一些 但是由于UDP 协议缺少流量控制等机制 容易出现一些难以解决的问题 UDP 的报文丢失 报文乱序 connect 函数 流量控制 外出网络接口的选择等是比较容易出现
  • 简单谈谈weex、nvue和vue

    1 区别 weex we except 自己的理解 支持原生和vue并写 原生渲染 但是组件库不完善 仅支持编写app nvue嵌入了weex引擎 又有uniapp丰富的组件库 相当于dcloud写的weex升级版 在uniapp中支持使用
  • 把xml转为成javaBean javaBean转为成xml

    1 先定义javaBean package com wutka jox test import com wutka jox import java util public class TestBean implements java io
  • 【满分】【华为OD机试真题2023 JS】计算网络信号

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 计算网络信号 知识点广搜数组 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 网络信号经过传递会逐层衰减 且遇到阻隔物无法直接穿透 在此情况下需要计算某个位置的网
  • Selenium成长之路-09简单对象定位之link text方法

    有的时候 我们需要操作的元素是一个文字链接 那么我们可以通过 linktext 或 partiallinktext 进行元素 定位 今天我们先来介绍link text元素定位 百度首页上面的 新闻 hao123 地图 等就可以使用link
  • 用Go语言开发以太坊合约

    转发请注明出处 https blog csdn net ahy231 article details 114112638 序 网上关于 go 语言开发 DApp 的教程较少 因此我只能通过官方文档来系统学习 go 语言的 DApp 开发 这
  • MacOS13+系统运行Stable Diffusion出现的问题及解决方法汇总

    目录 先睹为快 开发环境 问题一 点 生成 按钮就退出程序 问题二 生成的图片是马赛克 第一步 解决环境问题 第二步 更新指定的torch版本包 步骤一 更新指定的torch包 步骤二 重新安装pytorch nightly版本的包 问题三
  • 解决虚拟机VM和WSL2切换问题

    操作环境 windows11 虚拟机 wsl2用的都是Ubuntu 18 04 问题描述 因为之前一直使用wsl2 很久没有使用VM虚拟机 今天打开的时候发现VM不能用了 于是查资料发现用VM和wsl2会冲突 解决办法 首先说一下怎么从之前
  • C和C++中字符串说明与记录

    文章目录 目的 C语言 字符基本说明 字符串声明与操作 字符串常用函数说明 属性 复制 合并 替换 查询 比较 类型检查 类型转换 C C 字符串基本说明 C string和C语言字符串转换 C string常用方法说明 属性 类型转换 修
  • flutter滚动Text文本

    GlobalKey scrollTextKey new GlobalKey Timer scrollTextTimer ScrollController controller int index 0 override void initSt
  • js实现首页图片的轮播效果

    在大多数的网站里面首页都会有一个图片轮播的效果 而我们开发者要实现这种效果要么是使用第三方插件 要么是使用js自己写函数来实现这种效果 而我自己就是自己写js来实现这种效果 首先 我们来看一下最终完成的效果 这个就是最终实现的效果 下面我们
  • Qt5.0+msvc2010:解決中文乱码的问题

    1 在Qt Creator的工具列 选择 工具 gt 选项 进入设置界面 2 在弹出的设置界面里面 选择 文本编辑器 选择 行为 选项卡 把 行为 选项卡下面的 默认编码 置成 UTF 8 同时 UTF 8 BOM 置成 总是删除 最后点
  • MySQL(69)MySQL查看视图

    MySQL查看视图 创建好视图后 可以通过查看视图的语句来查看视图的字段信息以及详细信息 本节主要讲解如何使用 SQL 语句来查看视图的字段信息以及详细信息 查看视图的字段信息 查看视图的字段信息与查看数据表的字段信息一样 都是使用 DES
  • docker安装fastdfs

    1 搜索fastdfs docker search fastdfs 2 拉取镜像 docker pull morunchang fastdfs 3 运行tracker docker run d name tracker net host m
  • Gerrit 使用git常见问题

    目录 git push 失败报错 remote rejected master gt master prohibited by Gerrit git push报错 ERROR missing Change Id in message foo
  • Android Logcat&debug实用技巧

    logcat 作为我们最常用的调试手段 相信大家都不会陌生 这里总结一下 在使用Logcat过程中 常用的一些debug技巧 目的是为了快速有效的帮助找到并解决问题 先来看一看Logcat打印结构 常用 logcat v threadtim