Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)
Android日志[进阶篇]一-使用 Logcat 写入和查看日志
Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)
Android日志[进阶篇]三-Logcat命令行工具
Android日志[进阶篇]四-获取错误报告
Android日志[进阶篇]五-阅读错误报告
目录
- 调试中的堆栈轨迹
- 从外部来源打开堆栈轨迹
- 监控剪贴板,确定是否有新的堆栈轨迹
堆栈
一般是指java层的或jni层发生crash时候的函数调用序列,最顶层就是发生异常的地方,有的情况下这个堆栈并不一定完整。映射代码基本上指应用层(java 或kotlin),是为了方便将错误定格到代码上,也就是本文讲的内容。但建议小伙伴们要逐渐脱离这样的工具,能自己直接定格,这样效率会更高。至于jni的,需要进行相关的函数表配置,总体思路都是一样的。
调试中的堆栈轨迹
调试应用通常需要使用堆栈轨迹。每当您的应用因为错误或异常而崩溃时,都会生成堆栈轨迹。可以使用 Thread.dumpStack()
等方法输出应用代码中任意位置的堆栈轨迹。
在连接的设备上,当应用在调试模式下运行时,Android Studio 会在 logcat 视图中输出并突出显示堆栈轨迹,如图 1 所示。
图 1. Logcat 中的堆栈轨迹。
堆栈轨迹会显示导致抛出异常的方法调用列表,以及调用发生的文件名和行号。可以点击突出显示的文件名,以打开相应文件并检查方法调用的来源。点击 Up the stack trace 图标 和 Down the stack trace 图标 可以在 logcat 窗口中显示的堆栈轨迹行之间快速移动。
从外部来源打开堆栈轨迹
有时,需要分析线上错误报告中的堆栈轨迹,而不是在调试时发现的堆栈轨迹。例如,可能正在通过 Google Play 管理中心或一些其他工具(例如Firebase Crash Reporting,bugly,友盟)收集用户设备上生成的堆栈轨迹。
对于来自错误报告的外部堆栈轨迹,要获取相同的突出显示且可点击的视图,请按照以下步骤操作:
- 在 Android Studio 中打开app对应的项目。
注意:请确保正在查看的源代码的来源应用版本与生成堆栈轨迹的应用版本完全相同。如果代码不同,文件名与行号会不匹配,或堆栈轨迹和项目中的调用顺序会不一致。
- 从 Analyze 菜单中,点击 Analyze Stack Trace。
- 将堆栈轨迹文本粘贴到 Analyze Stack Trace 窗口中,然后点击 OK。
- Android Studio 会在 Run 窗口下打开一个新的 <Stacktrace> 标签页,其中包含您粘贴的堆栈轨迹。
监控剪贴板,确定是否有新的堆栈轨迹
如果经常使用外部堆栈轨迹,则可以通过允许 Android Studio 持续监控系统剪贴板上是否有新的堆栈轨迹,提高工作效率:
- 打开 Analyze Stacktrace 工具。
- 选中 Automatically detect and analyze thread dumps copied to the clipboard outside of IntelliJ IDEA 复选框。
- 将其他应用(例如来自网络浏览器的应用)中的堆栈轨迹复制到系统剪贴板。
- 当返回到 Android Studio 窗口时,相应堆栈轨迹会自动在 Run 窗口下打开,而无需将其粘贴到“Analyze Stacktrace”窗口中。
Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)相关推荐
- Android日志[进阶篇]五-阅读错误报告
Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...
- Android日志[进阶篇]四-获取错误报告
Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...
- Android日志[进阶篇]三-Logcat 命令行工具
Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...
- Android日志[进阶篇]一-使用 Logcat 写入和查看日志
Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...
- Android日志[基础篇]二 Android Studio修改LogCat日志的颜色
上一篇提到Android日志的5个级别的日志输出,在logcat里面设置自己喜欢或习惯的颜色,本文不只讲Android Sudio修改logcat的日志颜色. 代码和效果 代码 private voi ...
- Android日志[基础篇]Android Log日志输出
Android日志[基础篇]二 Android Studio修改LogCat日志的颜色 android.util.Log输出日志的常用方法如下: Log.v(String tag, String ms ...
- android 电容屏(二):驱动调试之基本概念篇
关键词:android 电容屏 tp 工作队列 中断 多点触摸协议 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0 平台:S5PV310(sams ...
- nas安装emby_威联通QNAP系统入门进阶 篇二:宅家新姿势—威联通NAS安装套件版Emby搭建家庭影音服务器...
威联通QNAP系统入门&进阶 篇二:宅家新姿势-威联通NAS安装套件版Emby搭建家庭影音服务器 2020-02-04 19:38:54 123点赞 1466收藏 123评论 你是AMD Ye ...
- [安全攻防进阶篇] 二.如何学好逆向分析、逆向路线推荐及吕布传游戏逆向案例
从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...
最新文章
- Intellij IDEA神器常用技巧七-超好用插件推荐
- Freemarker问答:
- 太阳光是平行光吗_科普文系列活动 || 奇妙的光现象
- 钉钉如何调整组织架构_阿里宣布新一轮组织架构调整:明确大文娱一号位,钉钉进入阿里云...
- vs编译cuda DLL
- nginx利用referer指令实现防盗链配置
- java ssh过滤器_SSH中的过滤器,拦截器,监听器的一些基本认识
- TCP/IP协议(二)tcp/ip基础知识
- ios 内存管理的理解(三)ARC下 对象内存管理
- 【Flink】Flink 写入到 CSV BucketingSink 的使用方法
- move.js操作CSS3动画
- MYSQL 最大连接数设置
- 最短路之floy算法
- 直线绘制算法-数值微分法(DDA)
- 对于J2EE体系架构的理解
- ASP.NET20003人事薪资管理系统
- RobotStudio 机器人的直线运动控制
- “苏宁SAP上线“有感(原)
- 05二项式系数Cnk.md
- Linux命令手动清除缓存
热门文章
- Java 18 正式发布,默认 UTF-8,finalize 被弃用,别再乱用了!
- Bean放入Spring容器,你知道几种方式?
- 网页如何做到适应在手机上浏览
- texlive 2020下载与安装
- Java创建对象的方式——反序列化创建对象
- 文件打开特别慢_“Origin进不去、下载慢”的解决办法合集
- 混凝土墙开洞_易县混凝土剪力墙切割常见问题
- python expect模块_Python尚学堂高淇|第二季0408P119P123with上常见的异常的解决tryexcept...else结构,...
- activiti 文档_免费、开源、多平台的PDF文档处理软件——PDFsam Basic
- 炒菜机器人放食材的顺序_珠江新城有了首家机器人餐厅,40多台机器人提供服务...