Unity 之 日志解析工具 Android Logcat

  • 一,工具集成
    • 1.1 注意事项
    • 1.2 导入插件
  • 二,连接设备
    • 2.1 使用USB连接
    • 2.2 无线连接
  • 三,实用功能介绍
    • 3.1 通用介绍
    • 3.2 堆栈跟踪工具 -- 解析Bugly捕获报错

一,工具集成

Logcat是开发者必备的工具,调试app时的闪退,异常,等问题都可以在这里看到。

Android Logcat包是在Unity Editor中显示来自Android设备的堆栈跟踪和日志等消息。


1.1 注意事项

Android Logcat软件包需要Unity 2019.4或更高版本以及Android支持模块。需要添加Android模块:

导入前需要注意:确保你的工程已加载Android模块,并且可以切到Android平台。

确认后在“build Settings”窗口中切换到Android构建目标。


1.2 导入插件

在Package Manager(Window” --> PackageManager)界面中导入:

插件简介:

Android Logcat软件包支持:

  • Android:日志消息

  • Android:应用程序内存统计

  • Android:屏幕捕获

  • Android:屏幕记录器

  • Stacktrace:实用程序

可以通过“Window > Analysis > Android Logcat ”在Unity Editor中访问该窗口。

窗口打开快捷键:Windows 按“Alt+6”;macOS “Option+6”


二,连接设备

Android Logcat软件包支持USB和无线连接。本节介绍如何将Android设备连接到Android Logcat窗口。

2.1 使用USB连接

当您打开Android Logcat窗口时,Unity会自动将任何USB连接的Android设备添加到设备列表中。

手机连接上USB之后,需要选择:传输文件。若没有此选项,则需要打开开发者模式。

PS: 在手机版本上多次点击才可以唤醒出开发者模式,再次点击则有吐司提示您已处于开发者模式,这时再去更多设置中去找开发者模式并开启即可。

检测上之后,即可在窗口中看到实时日志了:


2.2 无线连接

要将Android设备连接到Android Logcat窗口:

无线连接,还是得先使用2.1方式使用USB链接一下,然后打开Android Logcat窗口,从工具栏中,选择“设备选择器”。

选择其他连接选项:

在打开的窗口中,找到对应设备点击Connect:

连接成功提示:(不使用USB方式链接,直接输入IP地址,总是链接失败,不知道为什么[\疑惑])

连接成功后,拔掉USB连接,就可以在可用设备窗口,找到Wifi链接的了:

PS:一次只能连接到一个设备。要选择要连接的设备,请使用Android Logcat窗口中的设备列表。此列表包含已连接设备的设备ID。

可以看到实时日志了:

若需要断开连接,可以在连接窗口对应设备后点击“Disconnect”:

再次连接,直接点最下面的Connect链接,即可链接成功。


三,实用功能介绍

3.1 通用介绍

  1. 筛选包名查看日志
    点击No Filter,在弹出的下拉菜单中,即可选择当前运行应用的包名,进行查看当前应用的相关日志:

  2. 筛选日志信息
    Logcat工具支持在搜索框输入正则表达式检索和区分大小写功能:

  3. Reconnect重新连接,Disconnect断开链接
    当我们出现一个问题,需要查看日志时,为了防止日志太多将需要查看的日志刷过去,则可以点击Disconnect断开链接,停止捕获更新日志信息。需要再次查看日志时,点击Reconnect重新连接。


3.2 堆栈跟踪工具 – 解析Bugly捕获报错

Tools下拉菜单下选择Stacktrace Utility 可以打开工具面板:

准备工作:指定符号表)

Project Setting面板 -> Analysis -> Android Logcat Settings 中设置:

PS:打包时用的哪个就导入哪个,看你打包时的工程设置:Player -> Configuration

若不指定会在解析时报错提示:

At least one symbol path needs to be specified.
Click Configure Symbol Paths and add the necessary symbol path.

举个例子:解析Bugly捕获报错

操作步骤:复制Bugly报错到工具Original界面,然后点击Resolve Stacktraces 即可:

解析前日志:

at libunity.0x577cd8(Native Method)
at libunity.0x583bdc(Native Method)
at libunity.0x5844b8(Native Method)
at libunity.0x583870(Native Method)
at libunity.0x58380c(Native Method)
at libunity.0x1d9058(Native Method)
at libil2cpp.0x2bd4b20(Native Method)
at libil2cpp.0x2bd6008(Native Method)
at libil2cpp.0x278083c(Native Method)
at libil2cpp.0xb8dc68(Native Method)
at libil2cpp.0xb8dac8(Native Method)
at libunity.0x566cf4(Native Method)
at libunity.0x574f98(Native Method)
at libunity.0x581a0c(Native Method)
at libunity.0x5815e8(Native Method)
at libunity.0x583620(Native Method)
at libunity.0x583b44(Native Method)
at libunity.0x5844dc(Native Method)
at libunity.0x583870(Native Method)
at libunity.0x58380c(Native Method)
at libunity.0x1d9058(Native Method)
at libil2cpp.0x2bd4b20(Native Method)
at libil2cpp.0x2bd6008(Native Method)
at libil2cpp.0x278083c(Native Method)
at libil2cpp.0xb8dc68(Native Method)
at libil2cpp.0xb8dac8(Native Method)
at libunity.0x566cf4(Native Method)
at libunity.0x574f98(Native Method)
at libunity.0x581a0c(Native Method)
at libunity.0x5815e8(Native Method)
at libunity.0x583620(Native Method)
at libunity.0x583b44(Native Method)

解析后日志:

at libunity.0x577cd8 (ScriptingInvocation::ScriptingInvocation(ScriptingObjectPtr, ScriptingMethodPtr) at ??:?)(Native Method)
at libunity.0x583bdc (MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingExceptionPtr*) at ??:?)(Native Method)
at libunity.0x5844b8 (MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethodPtr, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x583870 (MonoBehaviour::StartCoroutine(char const*, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x58380c (MonoBehaviour::StartCoroutineManaged(char const*, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x1d9058 (MonoBehaviour_CUSTOM_StartCoroutineManaged(ScriptingBackendNativeObjectPtrOpaque*, ScriptingBackendNativeStringPtrOpaque*, ScriptingBackendNativeObjectPtrOpaque*) at ??:?)(Native Method)
at libil2cpp.0x2bd4b20 (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0x2bd6008 (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0x278083c (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0xb8dc68 (BrotliDecoderVersion at ??:?)(Native Method)
at libil2cpp.0xb8dac8 (BrotliDecoderVersion at ??:?)(Native Method)
at libunity.0x566cf4 (scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool) at ??:?)(Native Method)
at libunity.0x574f98 (ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) at ??:?)(Native Method)
at libunity.0x581a0c (Coroutine::InvokeMoveNext(ScriptingExceptionPtr*) at ??:?)(Native Method)
at libunity.0x5815e8 (Coroutine::Run(bool*) at ??:?)(Native Method)
at libunity.0x583620 (MonoBehaviour::TryCreateAndRunCoroutine(ScriptingObjectPtr, ScriptingMethodPtr, Coroutine**) at ??:?)(Native Method)
at libunity.0x583b44 (MonoBehaviour::HandleCoroutineReturnValue(ScriptingMethodPtr, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x5844dc (MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethodPtr, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x583870 (MonoBehaviour::StartCoroutine(char const*, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x58380c (MonoBehaviour::StartCoroutineManaged(char const*, ScriptingObjectPtr) at ??:?)(Native Method)
at libunity.0x1d9058 (MonoBehaviour_CUSTOM_StartCoroutineManaged(ScriptingBackendNativeObjectPtrOpaque*, ScriptingBackendNativeStringPtrOpaque*, ScriptingBackendNativeObjectPtrOpaque*) at ??:?)(Native Method)
at libil2cpp.0x2bd4b20 (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0x2bd6008 (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0x278083c (__start_il2cpp at ??:?)(Native Method)
at libil2cpp.0xb8dc68 (BrotliDecoderVersion at ??:?)(Native Method)
at libil2cpp.0xb8dac8 (BrotliDecoderVersion at ??:?)(Native Method)
at libunity.0x566cf4 (scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool) at ??:?)(Native Method)
at libunity.0x574f98 (ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) at ??:?)(Native Method)
at libunity.0x581a0c (Coroutine::InvokeMoveNext(ScriptingExceptionPtr*) at ??:?)(Native Method)
at libunity.0x5815e8 (Coroutine::Run(bool*) at ??:?)(Native Method)
at libunity.0x583620 (MonoBehaviour::TryCreateAndRunCoroutine(ScriptingObjectPtr, ScriptingMethodPtr, Coroutine**) at ??:?)(Native Method)
at libunity.0x583b44 (MonoBehaviour::HandleCoroutineReturnValue(ScriptingMethodPtr, ScriptingObjectPtr) at ??:?)(Native Method)

Unity 之 安卓堆栈跟踪和日志工具 (Android Logcat | 符号表解析Bugly捕获)相关推荐

  1. SAP CRM One Order跟踪和日志工具CRMD_TRACE_SET

    事务码CRMD_TRACE_SET激活跟踪模式: 在跟踪模式下运行One Order场景.运行完毕后,使用事务码CRMD_TRACE_EVAL: 双击参数,就能看到参数明细: 点Callstack也能 ...

  2. SAP CRM One Order跟踪和日志工具CRMD_TRACE_SET 1

    事务码CRMD_TRACE_SET激活跟踪模式: 在跟踪模式下运行One Order场景.运行完毕后,使用事务码CRMD_TRACE_EVAL: 双击参数,就能看到参数明细: 点Callstack也能 ...

  3. 安卓入门系列-01开发工具Android Studio的安装

    Android Studio的安装 背景 谷歌在早几年就关闭了第三方支持,现在官方主推的开发工具就是Android Studio,所以我的安卓开发也是从as开始的. 步骤 下载IDE 像安卓这类开发, ...

  4. logcat日志工具使用

    Logcat(Android日志工具) Logcat 是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从应用使用 Log 类写入的消息. 日志记录系统概览 Android 日 ...

  5. Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  6. 过滤日志中不相关的堆栈跟踪行

    我喜欢堆栈痕迹. 不是因为我喜欢错误,而是因为发生错误的那一刻,堆栈跟踪是无价的信息源. 例如,在Web应用程序中,堆栈跟踪向您显示完整的请求处理路径,从HTTP套接字到过滤器,Servlet,控制器 ...

  7. 服务器日志文件中包含堆栈跟踪,日志框架 Logback 官方手册(第三章:Configuration)...

    以下内容翻译整理自logback官方手册,地址:logback官方手册 logback 配置 将日志请求插入应用程序代码需要相当多的计划和工作.观察表明,大约有4%的代码用于日志记录.因此,即使是一个 ...

  8. 堆栈跟踪 堆栈跟踪_过滤日志中无关的堆栈跟踪行

    堆栈跟踪 堆栈跟踪 我喜欢堆栈痕迹. 不是因为我喜欢错误,而是因为发生错误的那一刻,堆栈跟踪是无价的信息源. 例如,在Web应用程序中,堆栈跟踪向您显示完整的请求处理路径,从HTTP套接字到过滤器,S ...

  9. 【深入理解java虚拟机v3 】 4.2.6 jstack:Java堆栈跟踪工具(查看所有的线程信息占cpu最高的进程和线程)

    文章目录 1. 原文概述 补充概述 2. 例子 2.1 用jstack加进程id查找死锁 2.2 jstack统计线程数 2.3 jstack检测cpu高 3. 实战 3.1 一次cpu高的实战记录 ...

最新文章

  1. 产品思维-产品初期准备
  2. apk反编译工具-apktool
  3. 转】用Maven构建Mahout项目
  4. MyEclipse/Eclipse快捷键调试大全
  5. 【转】TCP协议的无消息边界问题
  6. laravel学习笔记------Route::resource和Form-Model-Binding
  7. (转)ASP.NET 3.5 企业级开发
  8. MIT Mini Cheetah 的驱动与结构原理解读以及对尺寸效应
  9. 千千静听V5.6 Beta3 美化增强版
  10. 如何积累人生的第一桶金
  11. 常用的字符串方法大全
  12. win10 新版文件资源管理器
  13. 【数学之美】分形图形动画演示欣赏
  14. 运维自动化工具-ansible的安装与ad-hoc模式场景应用
  15. Hive入门教程<2> | hive在centos7下的安装部署
  16. 刘润商业洞察力学习笔记1
  17. PCB生产时“补偿”“开窗”是什么意思
  18. 开发、测试、运维等岗位薪酬体系大公开!你拖后腿了吗?
  19. 第七届蓝桥杯单片机省赛题目解析
  20. 独家丨立白推出银发个护品牌,日化巨头如何抢占银发市场?

热门文章

  1. StringBuffer类append方法的用法和用途
  2. 解决 YOLOV5中SyntaxError: Non-ASCII character ‘\xf0‘ in file detect.py
  3. spring mvc使用gzip压缩
  4. MInd+制作语音识别机器人
  5. 即时定位与地图构建技术浅析
  6. 谁说了真话,谁打碎了花瓶
  7. AES加密的工作模式ECB、CBC、CFB、OFB及案例
  8. Xxl-Job执行器原理解析
  9. sql中时间判断符号_大于号_小于号
  10. 民办学校计算机二级报名费,全国计算机等级考试报名有限额(全国计算机二级报名时间)...