Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)

Android日志[进阶篇]一-使用 Logcat 写入和查看日志
Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)
Android日志[进阶篇]三-Logcat命令行工具
Android日志[进阶篇]四-获取错误报告
Android日志[进阶篇]五-阅读错误报告

目录

  • 调试中的堆栈轨迹
  • 从外部来源打开堆栈轨迹
  • 监控剪贴板,确定是否有新的堆栈轨迹

堆栈
一般是指java层的或jni层发生crash时候的函数调用序列,最顶层就是发生异常的地方,有的情况下这个堆栈并不一定完整。映射代码基本上指应用层(java 或kotlin),是为了方便将错误定格到代码上,也就是本文讲的内容。但建议小伙伴们要逐渐脱离这样的工具,能自己直接定格,这样效率会更高。至于jni的,需要进行相关的函数表配置,总体思路都是一样的。

调试中的堆栈轨迹

调试应用通常需要使用堆栈轨迹。每当您的应用因为错误或异常而崩溃时,都会生成堆栈轨迹。可以使用 Thread.dumpStack() 等方法输出应用代码中任意位置的堆栈轨迹。

在连接的设备上,当应用在调试模式下运行时,Android Studio 会在 logcat 视图中输出并突出显示堆栈轨迹,如图 1 所示。

图 1

图 1. Logcat 中的堆栈轨迹。

堆栈轨迹会显示导致抛出异常的方法调用列表,以及调用发生的文件名和行号。可以点击突出显示的文件名,以打开相应文件并检查方法调用的来源。点击 Up the stack trace 图标 Down the stack trace 图标 可以在 logcat 窗口中显示的堆栈轨迹行之间快速移动。

从外部来源打开堆栈轨迹

有时,需要分析线上错误报告中的堆栈轨迹,而不是在调试时发现的堆栈轨迹。例如,可能正在通过 Google Play 管理中心或一些其他工具(例如Firebase Crash Reporting,bugly,友盟)收集用户设备上生成的堆栈轨迹。

对于来自错误报告的外部堆栈轨迹,要获取相同的突出显示且可点击的视图,请按照以下步骤操作:

  1. 在 Android Studio 中打开app对应的项目。

    注意:请确保正在查看的源代码的来源应用版本与生成堆栈轨迹的应用版本完全相同。如果代码不同,文件名与行号会不匹配,或堆栈轨迹和项目中的调用顺序会不一致。

  2. Analyze 菜单中,点击 Analyze Stack Trace

    “Analyze Stack Trace”窗口

  3. 将堆栈轨迹文本粘贴到 Analyze Stack Trace 窗口中,然后点击 OK
  4. Android Studio 会在 Run 窗口下打开一个新的 <Stacktrace> 标签页,其中包含您粘贴的堆栈轨迹。

    Stacktrace 窗口

监控剪贴板,确定是否有新的堆栈轨迹

如果经常使用外部堆栈轨迹,则可以通过允许 Android Studio 持续监控系统剪贴板上是否有新的堆栈轨迹,提高工作效率:

  1. 打开 Analyze Stacktrace 工具。
  2. 选中 Automatically detect and analyze thread dumps copied to the clipboard outside of IntelliJ IDEA 复选框。
  3. 将其他应用(例如来自网络浏览器的应用)中的堆栈轨迹复制到系统剪贴板。
  4. 当返回到 Android Studio 窗口时,相应堆栈轨迹会自动在 Run 窗口下打开,而无需将其粘贴到“Analyze Stacktrace”窗口中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python股票数据分析实验报告_Python实验报告

一、实验原理(要求、任务等)(一)、Python的开发环境Python诞生于20世纪90年代初&#xff0c;是一种解释型、面向对象、动态数据类型的高级程序设计语言&#xff0c;是最受欢迎的程序设计语言之一。编写、编译和运行Python程序有以下3种方法。1.使用交互式解释器2.使用Windows命…

Android日志[进阶篇]一-使用 Logcat 写入和查看日志

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录查看应用日志写入日志消息Logcat 消息格式设置…

哈希表数据结构_算法与数据结构-哈希表

前面我们已经讲到了数组和链表&#xff0c;数组能通过下标 O(1) 访问&#xff0c;但是删除一个中间元素却要移动其他元素&#xff0c;时间 O(n)。 循环双端链表倒是可以在知道一个节点的情况下迅速删除它&#xff0c;但是吧查找又成了 O(n)。难道就没有一种方法可以快速定位和删…

Android日志[进阶篇]三-Logcat 命令行工具

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录日志记录系统概览命令行语法logcat命令行选项过…

python while语法结构_python语法之流程控制(if while for)

一.python语法之流程控制1.1什么是流程控制&#xff1f;流程控制即控制流程&#xff0c;具体指控制程序的执行流程&#xff0c;而程序的执行流程分为三种结构&#xff1a;顺序结构(之前我们写的代码都是顺序结构)、分支结构(判断)、循环结构(while for)二.分支结构2.1 什么是分…

Android日志[进阶篇]四-获取错误报告

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录前言从设备上获取错误报告从 Android 模拟器上…

下列哪个适合做链栈_朋友圈人格图鉴:三天可见 vs 全部可见,哪个更适合做恋人?...

你们的朋友圈里有没有这样几种人&#xff1f;<< 朋友圈大赏 >>你可能已经对这些朋友圈的风格习以为常&#xff0c;其实&#xff0c;每个人在朋友圈展示的语言、行为&#xff0c;可能默默揭示着一个人自己原本是怎样的人、想成为什么样的人&#xff0c;以及与他人的…

python玫瑰花数量的含义_玫瑰花数量代表的含义

1朵玫瑰代表——我的心中只有你 ONLY YOU&#xff01;2朵玫瑰代表——这世界只有我俩&#xff01;3朵玫瑰代表——我爱你 I LOVE YOU&#xff01;4朵玫瑰代表——至死不渝&#xff01;5朵玫瑰代表——由衷欣赏&#xff01;6朵玫瑰代表——互敬 互爱 互谅&#xff01;7朵玫瑰代表…

Android日志[进阶篇]五-阅读错误报告

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录Logcat查看事件日志ANR 和死锁找出无响应的应用…

iatf16949内审员_申请IATF16949认证有什么要求

1、证件要求必须要提供三证合一的营业执照&#xff08;在有效期内&#xff09;&#xff0c;营业执照的范围必须与申请IATF16949认证范围一致。2、处于汽车供应链的证明因为IATF16949认证要求厂家必须是直接与生产汽车有关的&#xff0c;具有加工制造能力&#xff0c;并通过这种…

GenseeSDK DocView(OpenGL)引起的TextView显示黑块

现象 先上图&#xff1a; 正常的图&#xff1a; 来到这的大侠是否也出现了同样的问题。 操作与描述 退出直播播放器后&#xff0c;整个app界面所有的TextView(EditText/Button)都显示为黑块。 快速解决 退出直播或点播后不要调用DocView的closeDoc函数即可&#xff0c;当…

python医疗发票 信息抽取_PYTHON网络爬虫与信息提取[信息的组织与提取](单元五)...

1 三种信息类型的简介xml : extensible markup language与html非常相似现有html后有xmlxml是html发展来的 扩展 通用json 类型javascript object notation有类型的键值对 表达的方式一个key对应多个值"key1":["asas",asas]嵌套使用"name":{&quo…

Android WebView https白屏、Http和Https混合问题、证书配置和使用

目录前言启用https后白屏&#xff08;证书错误&#xff09;修改处理WebView中Http和Https混合问题处理办法Webview的几种内容加载模式证书配置或处理https请求的证书okhttp进行请求&#xff1a;HttpsURLConnection忽略证书前言 原有项目中有部分界面是用webview展现的h5页面&am…

Kotlin AAPT: error: resource android:attr/lStar not found.

这是使用kotlin之后发生的错误。 打开 android/app 工程全局搜索androidx.core:core-ktx: 全局搜索快捷键 ctrlshift f将搜索到的内容修改为androidx.core:core-ktx:1.6.0 也就是说将androidx.core:core-ktx: 修改为androidx.core:core-ktx:1.6.0,一般情况下是在module的中的b…

python selenium iframe怎么定位_python+selenium四:iframe查看、定位、切换

iframe是HTML里面嵌套HTML的一种框架1.查看iframe1.Top Window&#xff1a;可直接定位2.iframe#i&#xff1a;说明此元素在iframe上3.iframe显示为空&#xff1a;(id或name为空)4.右边这个看到是空的(2层iframe)以126邮箱为例from selenium import webdriverdriver webdriver.…

Kotlin plugin should be enabled before ‘kotlin-android-extensions‘

问题一 、Kotlin plugin should be enabled before ‘kotlin-android-extensions‘ 在java项目中添加kotlin的类之后&#xff0c;根据提示进行各种配置和下载&#xff0c;一顿操作后出现了Kotlin plugin should be enabled before kotlin-android-extensions’ 处理办法&…

python增加工作日列_将工作日添加到日期字段

我试图在Django的日期字段中添加一些工作日。这是针对产品订购&#xff0c;我们对不同的产品有不同的交付周期&#xff0c;我们希望为每个产品生成一个目标日期。在例如&#xff0c;产品X可能需要10个工作日才能交付&#xff0c;如果此产品是在2013年3月1日星期五订购的&#x…

tensorrt轻松部署高性能dnn推理_基于TensorRT车辆实时推理优化

基于TensorRT车辆实时推理优化Optimizing NVIDIA TensorRT Conversion for Real-time Inference on Autonomous Vehicles自动驾驶系统使用各种神经网络模型&#xff0c;这些模型要求在GPU上进行极其精确和高效的计算。Zoox是一家全新开发robotaxis的初创公司&#xff0c;充分利…

问卷调查试卷的数据设计

目录前言数据定义数据说明1、第一层{}2、question 一个题目{}3、answer一个答题回复{}4、option 一个选项{}5、selectItems {}具体数据1、发题&#xff08;终端请求&#xff09;示例2、答题(图片答题&#xff0c;终端请求)互动或静态3、停止答题(终端请求&#xff0c;一般是互动…

手机上网流量统计_数据统计 | 上半年手机流量同比增110.2%,你贡献了多少?

来源&#xff1a;工信部网站、中新经纬版权申明&#xff1a;内容来源网络&#xff0c;版权归原创者所有。除非无法确认&#xff0c;我们都会标明作者及出处&#xff0c;如有侵权烦请告知我们&#xff0c;我们会立即删除并表示歉意。谢谢&#xff01;7月25日&#xff0c;工信部网…