Android深入浅出系列课程---Lesson2 AAF110426_Log打开android大门

Android开发视频教程-深入浅出系列Lesson20-AFF111029学习Android界面开发的基础 课程目标: 学习和掌握Android界面开发学习方法 了解Android界面如何呈现出来的 了解Android事件机制 如何自定义组件? · 重点难点: 了解界面呈现机制 了解android界面事件机制 · 考核目标: 你会写Android自定义组件么? 说说Android事件机制 UI呈现需要底层的支持么? 我们做界面最关键的类是? · 课后练习: 写一个自定义的组件 阅读详情

 大家好,上一讲对Android中Context的介绍,这一讲将进入“玩懂Log,打开Android的大门”。


一、课程目标:
        熟悉使用android log形式

学会理解系统log

通过Log分析ANR 和 Force Closed所引起的程序问题

    (ANR---应用程序无响应) (Force Closed---强行关闭)
知道系统Log文件的存放路径

二、重点难点:
        如何通过Log快速定位到Root Cause 的位置

三、考核目标:
        如何在程序中打出Log 以及Log的分类区别 ?

    给你一个Log文件,如何定位到问题所在?

四、课后练习:
写一个Demo 用Log.i 打印出Activity生命周期
从开发机或者模拟器中取一个log文件,找异常处分析,尽量翻译成自然语言

l 介绍一款做自动化压力测试的工具---Monkey(ADB、DDMS和Monkey工具,先只做简单介绍,以后会有专题的详解)
1.安装一个第三方应用程序到模拟器
2.通过Monky运行压力测试 , monkey -p package -v frequency
3.出现ANR or Force closed,取得log文件
4.分析log文件
l 利用DDMS来看Logcat中的日志,Log的种类:
1.V-Verbose
2.D-Debug
3.I-Info
4.W-Warn
5.E-Error
注:重要级依次递增
l 关于日志文件
1.何时产生?
一般在如下几种情况会产生log文件 。
程序异常退出 , uncaused exception
程序强制关闭 ,Force Closed (简称FC)
程序无响应 , Application No Response (简称ANR)
2.产生的位置
3.Log文件的组成
1.系统基本信息 ,包括 内存,CPU ,进程队列 ,虚拟内存 , 垃圾回收等信息 。
------ MEMORY INFO (/proc/meminfo) ------
------ CPU INFO (top -n 1 -d 1 -m 30 -t) ------
------ PROCRANK (procrank) ------
------ VIRTUAL MEMORY STATS (/proc/vmstat) ------
------ VMALLOC INFO (/proc/vmallocinfo) ------

格式如下:
------ MEMORY INFO (/proc/meminfo) ------
MemTotal:         347076 kB
MemFree:           56408 kB
Buffers:            7192 kB
Cached:           104064 kB
SwapCached:            0 kB
Active:           192592 kB
Inactive:          40548 kB
Active(anon):     129040 kB
Inactive(anon):     1104 kB
Active(file):      63552 kB
Inactive(file):    39444 kB
Unevictable:        7112 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                44 kB
Writeback:             0 kB
AnonPages:        129028 kB
Mapped:            73728 kB
Shmem:              1148 kB
Slab:              13072 kB
SReclaimable:       4564 kB
SUnreclaim:         8508 kB
KernelStack:        3472 kB
PageTables:        12172 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      173536 kB
Committed_AS:    7394524 kB
VmallocTotal:     319488 kB
VmallocUsed:       90752 kB
VmallocChunk:     181252 kB


2,事件信息 , 也是我们主要分析的信息 。
------ VMALLOC INFO (/proc/vmallocinfo) ------
------ EVENT INFO (/proc/vmallocinfo) ------

格式如下:
------ SYSTEM LOG (logcat -b system -v time -d *:v) ------
01-15 16:41:43.671 W/PackageManager( 2466): Unknown permission com.wsomacp.permission.PROVIDER in package com.android.mms
01-15 16:41:43.671 I/ActivityManager( 2466): Force stopping package com.android.mms uid=10092
01-15 16:41:43.675 I/UsageStats( 2466): Something wrong here, didn't expect com.sec.android.app.twlauncher to be paused
01-15 16:41:44.108 I/ActivityManager( 2466): Start proc com.sec.android.widgetapp.infoalarm for service com.sec.android.widgetapp.infoalarm/.engine.DataService: pid=20634 uid=10005 gids={3003, 1015, 3002}
01-15 16:41:44.175 W/ActivityManager( 2466): Activity pause timeout for HistoryRecord{48589868 com.sec.android.app.twlauncher/.Launcher}
01-15 16:41:50.864 I/KeyInputQueue( 2466): Input event
01-15 16:41:50.866 D/KeyInputQueue( 2466): screenCaptureKeyFlag setting 0
01-15 16:41:50.882 I/PowerManagerService( 2466): Ulight 0->7|0
01-15 16:41:50.882 I/PowerManagerService( 2466): Setting target 2: cur=0.0 target=70 delta=4.6666665 nominalCurrentValue=0
01-15 16:41:50.882 I/PowerManagerService( 2466): Scheduling light animator!
01-15 16:41:51.706 D/PowerManagerService( 2466): enableLightSensor true
01-15 16:41:51.929 I/KeyInputQueue( 2466): Input event
01-15 16:41:51.933 W/WindowManager( 2466): No focus window, dropping: KeyEvent{action=0 code=26 repeat=0 meta=0 scancode=26 mFlags=9}



3,虚拟机信息 , 包括进程的,线程的跟踪信息,这是用来跟踪进程和线程具体点的好地方 。  
------ VM TRACES JUST NOW (/data/anr/traces.txt.bugreport: 2011-01-15 16:49:02) ------
------ VM TRACES AT LAST ANR (/data/anr/traces.txt: 2011-01-15 16:49:02) ------


格式如下 :
----- pid 21161 at 2011-01-15 16:49:01 -----
Cmd line: com.android.mms

DALVIK THREADS:
"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x4001d8d0 self=0xccc8
  | sysTid=21161 nice=0 sched=0/0 cgrp=default handle=-1345017808
  | schedstat=( 4151552996 5342265329 10995 )
  at android.media.MediaPlayer._reset(Native Method)
  at android.media.MediaPlayer.reset(MediaPlayer.java:1218)
  at android.widget.VideoView.release(VideoView.java:499)
  at android.widget.VideoView.access$2100(VideoView.java:50)
  at android.widget.VideoView$6.surfaceDestroyed(VideoView.java:489)
  at android.view.SurfaceView.reportSurfaceDestroyed(SurfaceView.java:572)
  at android.view.SurfaceView.updateWindow(SurfaceView.java:476)
  at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:206)
  at android.view.View.dispatchDetachedFromWindow(View.java:6082)
  
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1156)
  at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:2296)
  at android.view.ViewGroup.removeAllViews(ViewGroup.java:2254)
  at com.android.mms.ui.SlideView.reset(SlideView.java:687)
  at com.android.mms.ui.SlideshowPresenter.presentSlide(SlideshowPresenter.java:189)
  at com.android.mms.ui.SlideshowPresenter$3.run(SlideshowPresenter.java:531)
  at android.os.Handler.handleCallback(Handler.java:587)
  at android.os.Handler.dispatchMessage(Handler.java:92)
  at android.os.Looper.loop(Looper.java:123)
  at android.app.ActivityThread.main(ActivityThread.java:4627)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:521)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    at dalvik.system.NativeStart.main(Native Method)
---------------------------------------------------------------------------------------------------------------------------------------
4.如何利用Log文件

1,如果是ANR问题 , 则搜索“ANR”关键词 。 快速定位到关键事件信息 。

2,如果是ForceClosed 和其它异常退出信息,则搜索"Fatal" 关键词, 快速定位到关键事件信息 。
3,定位到关键事件信息后 , 如果信息不够明确的,再去搜索应用程序包的虚拟机信息 ,查看具体的进程和线程跟踪的日志,来定位到代码 。  
(用这种方法,出现问题,根本不需要断点调试 , 直接定位到问题,屡试不爽 。)
具体方法,不在帖子中展示,请见谅!
今日问答:(请大家踊跃在帖子中回复)
一、何时会产生ANR呢?

二、如何在程序中打出Log 以及Log的分类区别 ?
给你一个Log文件,如何定位到问题所在?

本讲对Android中Log的介绍,下一讲将进入ProcessLifecycle,内容预告:AAF110427_进程生命周期ProcessLifecycle,敬请期待。

 

如有疑问,请联系我们的QQ:Lily :874511079,May:2676949886
特别推荐新课程:Android开发高端课程

http://www.mobidever.com/forum.php?mod=viewthread&tid=2098
本课视频地址:http://www.tudou.com/programs/view/TXn5rFQU2QA/  (土豆网)
课程下载地址:http://www.verycd.com/topics/2900036/ (VeryCD电驴)
作者博客:http://www.mobidever.com/forum.php (Sundy-Android开发联盟)

Android应用开发基础到深入篇第一课第二到四讲_Android总体介绍 立即下载

相关推荐

Android应用开发基础到深入篇_Lesson2_开发环境搭建及HelloWorld1

\Android应用开发基础到深入篇_Lesson2_开发环境搭建及HelloWorld\Android应用开发基础到深入篇_Lesson2_开发环境搭建及HelloWorld1第一、二课

android 视频录像崩溃,java - Android Studio-视频应用程序崩溃-Videoview和Mediaplayer-无法播放录像 - 堆栈内存溢出...

我有一个应用程序,在该应用程序中,我使用按钮来通过意图录制视频来启动相机。 这项工作正常,应用程序返回到mainactivity。 返回mainactivity后,我希望最后一个录制的视频在VideoView中播放。 此时,我的问题出现了。我试图按照下面提供的链接上的说明进行操作,但显然不正确。Logcat说我需要使用Mediaplayer。 有人可以帮我一些代码吗?提前致谢!packag...

weixin_35642637的博客 750

Android应用开发基础到深入篇_Lesson2_开发环境搭建及HelloWorld2

Android应用开发基础到深入篇_Lesson2_开发环境搭建及HelloWorld第三、四课

网飞公司(Netflix)是怎么用Python的?

本文译自网飞科技博客,原文: https://netflixtechblog.com/python-at-netflix-bba45dae649e?gi=83b411a8aff Netflix(网飞)是全球最大的视频流媒体平台,在除中国大陆地区之外的所有国家和地区都提供视频点播服务。Netflix是经营在线业务公司中的一个亮点。它成功地把传统的影像租赁业务和现代化的市场营销手段、先进的IT网络技术结合起来,从而开创了在线影像租赁的新局面。Netflix通过整合其自身的营销手段和最近的IT网络技术,成功地改变

Python实用宝典网 1898

Dify + Oracle + MCP:轻松构建 RAG 应用与Oracle MCP Agent

通过一个实践案例,展示如何使用 Oracle 23ai 数据库、Dify、Oracle SQLcl MCP 从零开始构建一个功能完备的 RAG 应用,以及通过 Agent 与 SQLcl MCP Server 实现 Oracle 数据访问。

Rambo zheng的博客 2501

dify离线部署

以bge-m3为例,本地部署bge-m3首先在一台能连网的linux服务器上(部署有ollama)创建想要保存模型的文件夹编辑ollama.service,配置ollama模型的保存路径添加模型存储地址将models目录设置属主,必须做,否则ollama无法启动重新加载配置文件并重启ollama测试ollama 运行是否正常最后拉取 bge-m3可在/opt/LLMModels/bge_m3/models目录下看到拉取得模型使用tar命令压缩文件夹。

weixin_42538734的博客 3068

Android深入浅出系列课程---Lesson1 AAF110430_android中context介绍

大家好,这一讲我们来介绍下Android中Context 一、课程目标:         了解Android中的Context 二、重点难点:         观察Context的实现 三、考核目标:         Context在Android中的作用 , Context的实现 四、课后练习:         研究清楚Context的实现研究清楚Contex

434

Second-Order Cone Programming(SOCP) 二阶锥规划

个人博客Glooow,欢迎各位老师来踩踩 文章目录1. 二阶锥1.1 二阶锥定义1.2 二阶锥约束2. 优化问题建模3. 类似问题转化3.1 二次规划3.2 随机线性规划4. 问题求解 1. 二阶锥 1.1 二阶锥定义 在此之前,先给出二阶锥的定义。 在 kkk 维空间中二阶锥 (Second-order cone) 的定义为 Ck={[ut]∣u∈Rk−1,t∈R,∥u∥≤t} \mathc...

Glooow的博客 3万+

android 播放器 详解,详解Android App中使用VideoView来实现视频播放的方法

通过VideoView播放视频的步骤:1、在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件2、调用VideoView的如下两个方法来加载指定的视频(1)setVidePath(String path):加载path文件代表的视频(2)setVideoURI(Uri uri):加载uri所对应的视频3、调用VideoView的start()、stop()、psuse(...

weixin_35599815的博客 1084

Yolo8行人车辆目标检测实战分享 完整项目代码可直接运行

Yolo8行人车辆目标检测实战分享 完整项目代码可直接运行

1294

ximalaya 新xm-sign逆向思路

本文主要介绍目标网站新xm-sign值的逆向思路。仅代表个人理解,如有其他建议可在评论区沟通。声明仅仅记录一下自己的学习方法,不作为其他参考、更不作为商业用途。如有侵犯请联系本人删除。

weixin_66580433的博客 2017

Xilinx_JESD204B

Xilinx_JESD204B_AXI配置 说明:通过FPGA的高速数据接口JESD204B对AD9625进行高速采集。 环境:Vivado2018.3。 IP核:JESD204(7.2)。 参考手册:pg066_jesd204 v7.2。 资料以及IP_licence:JESD204B AXI协议资料:AXI 文章目录JESD204B概述JESD204B接口术语JESD204B 层JESD204B_AXI介绍AXI介绍JESD204B__AXI_Lite接口AXI-Lite接口介绍AXI-Lite接口信号

Crazzy_M的博客 1万+

Android开发之旅:环境搭建及HelloWorld

——工欲善其事必先利其器 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教。 在开始Android开发之旅启动之前,首先要搭建环境,然后创建一个简单的HelloWorld。本文的主题如下: 1、环境搭建 ...

weixin_33951761的博客 349

编写python脚本调用ordinals以及BRC20的接口

1、钱包地址生成walletreceive,对应ord命令:ord wallet receive。6、测试手动出块generate,这个只在regtest链节点用得上。所有接口都是post请求,采用postman进行测试。4、测试bitcoin转币sendtoaddress。7、测试其他的wallet方法wallet。2、钱包币种铭刻inscription,对应bitcoin-cli命令。对应bitcoin-cli命令。对应bitcoin-cli命令。fee.json文本模板。还可以加很多根据需要加减。

云深海阔专栏 1047

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1632

android log 分析(一)

如何分析和研究Log文件 ,如何看日志信息  Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 。 下面我们就来说说如何处理log文件 。 什么时候会有Log文件的产生 ? Log的产生大家都知道 , 大家也都知道通过DDMS来看log , 但什么时候会产生log文件呢 ?一般在如下几种情况会产生log文件 

我相信分享也是一种能力 1760

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【撸码caffe 一】syncedmen.hpp

SyncedMemory类主要负责在主机(CPU)和设备(GPU)之间管理内存分配和数据同步工作,封装了CPU和GPU之间的数据交互操作。 补充一点GPU的相关知识: 对CUDA架构而言,主机端的内存被分为两种,一种是可分页内存(pageable memroy)和页锁定内存(page-lock或 pinned)。可分页内存是由操作系统API malloc()在主机上分配的,

牧野的博客 1120

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

有用的脚本(持续更新中.......)

1.indent 格式化代码 ### For source code format if [ $# = 0 ];then echo "Need an arg(file name)!!" else indent -nut -npro -nip -nlp -npsl -i4 -ts4 -sob -l88 -ss -bl -bli 0 $1 fi 2.去掉^M 当DOS

ying357的专栏 956

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Log分析教程及例子【转】

这次打算通过一个例子,深入解析一下log的分析方法以及Handler对象,Android多线程及MediaPlayer状态分析 。 一、得到log文件 ANR 出现了 。 开始做修改准备工作 ,得到log文件 。 有人问log文件在哪儿 ? 一般在/data/log 下面 。你可以通过执行命令 adb shell 进去看看。 二,如何分析和研究Log文件 ,如何看日志信息 。L...

lcdxwhj2003的专栏 1188

Android开发视频教程-深入浅出系列Lesson19-AFF110727_蓝牙编程入门

课程目标 知道蓝牙是什么,能够做什么,知道常用蓝牙的API 重点难点 理解蓝牙API,并且熟练使用 考核目标 什么是蓝牙,如何使用? 建立蓝牙端口,接收远端蓝牙数据的过程是什么? 如何进行蓝牙设备的搜索与配对?建立连接的过程是什么? 课后练习 能独立开发一个蓝牙聊天程序 Android蓝牙介绍 蓝牙是一种设备短距离无线通信技术,使用蓝牙你可以搜索并连接到附近的蓝牙设备,可以在

1317

Android深入浅出系列课程--Lesson11 Android.Framework源码下载及编译

大家好,上一讲我们介绍了以后的课程的大体安排,这一讲我们将进Android.Framework源码下载及编译         课程目标:     Android Framework 源码下载及编译         重点难点:           Android不同版本源代码环境配置的不同         考核目标:         下载Android Framework源码的过程

1003

《2012Sundy高级课程更新》Android深入浅出系列课程文章列表

既然是一个系列的教程,那么在这给大家建立一个系列文章的列表,大家查看文章也方便!! 深入浅出 1.Android深入浅出系列课程---Lesson0 SHW110425_开场白 2.Android深入浅出系列课程---Lesson1 AAF110430_android中context介绍 3.Android深入浅出系列课程---Lesson2 AAF110426_Log打开an

740

Android深入浅出系列课程---Lesson3 AAF110427_进程生命周期Process Lifecycle

大家好,上一讲我们介绍了Android中Log,这一讲我们来讲下进程生命周期Process Lifecycle。 一、课程目标:         熟悉Android Process生命周期     掌握Android进程的5个等级 二、重点难点:         理解性的记忆Android的5个等级的的含义及转换关系 三、考核目标:         请说出Andro

646

Android深入浅出系列课程---Lesson0 SHW110425_开场白

Android深入浅出的四个阶段:         1、序         2、AAF应用框架         3、LLY底层         4、SPI系统移植综合 首先:Android深入浅出之序 一、讲课特点 1. 比较Open,不封闭 2. 是动态的,不是静态的 3. 辐射状的,而非线形的 二、课程的简单介绍---课程结构(不一一列举,将在以后的课程

587
上一篇: Android深入浅出系列课程---Lesson1 AAF110430_android中context介绍
下一篇: Android深入浅出系列课程---Lesson3 AAF110427_进程生命周期Process Lifecycle
sundy_android
博客等级 码龄15年 5粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值