BugProfiler功能使用介绍

简介: BugProfiler功能使用介绍

目前BugProfiler主要是用来定位lj_meta_cache函数的调用情况:


image.png


选项解释

enabled

是否启用bugProfiler功能

log save directory

log文件的保存目录

cpp filter

对c++的堆栈进行过滤,如果堆栈包含有指定的字符串,那么就会被保存到log文件中

  • 如果不需要过滤,填写空字符串即可
  • 如果有适配多个字符串,使用,分割(注意:如果字符串中包含空格也会参与过滤),比如:
a,b,c
  • 只要c++堆栈中包含a、或者b、或者c、都认为是一个有效的结果

我们可以通过bugly,尽可能的找到崩溃相关的函数,通过cpp filter,我们会收集到有针对性的log,减少干扰项

watch

当watch启用时,BugProfiler就会开始收集相关log。

当watch禁用后,会自动生成日志文件


image.png


watch属性后边会有一个数字,表示当前收集到的log数量,我们可以通过该数字很只管的观察到log的大致情况。

日志文件示例

call lj_meta_cache history:
#1 hash:66860401
  TextureTools::cppStack at E:\proj\tank5\client\frameworks\runtime-src\Classes\tools\TextureTools.cpp:145
  collectionCallStackInfo at E:\proj\tank5\client\frameworks\qt-editor\src\editor\module\ModuleBase.cpp:115
  emitHookFunction at E:\proj\tank5\client\frameworks\qt-editor\src\luajit\src\lib_hook.c:14
  lj_meta_cache at E:\proj\tank5\client\frameworks\qt-editor\src\luajit\src\lj_meta.c:53
  lj_meta_tset at E:\proj\tank5\client\frameworks\qt-editor\src\luajit\src\lj_meta.c:175
  lua_settable at E:\proj\tank5\client\frameworks\qt-editor\src\luajit\src\lj_api.c:967
  storeatubox at E:\proj\tank5\client\frameworks\cocos2d-x\external\lua\tolua\tolua_event.c:34
  class_newindex_event at E:\proj\tank5\client\frameworks\cocos2d-x\external\lua\tolua\tolua_event.c:377
  <__newindex> at =[C]:-1
  <func> at .\cocos/cocos2d/functions.lua:268
  <goLayer> at .\index.lua:152
  [Lua] at .\index.lua:129
#2 hash:66860401
  see details same by hash 
#3 hash:66860401
  see details same by hash

#numer可以看到触发lj_meta_cache函数的次数,通过hash,精简了log,更加清楚的看到调用情况。

使用实例

  1. 尽可能多的获取c++堆栈的函数,比如bugly上报的崩溃堆栈,如果崩溃堆栈是符号地址,需要通过addr2line等相关工具换取相关的函数名字,相关工具推荐vscode插件-addr2line-assistant
  2. 最好确认一些c++堆栈的函数,在源码中是否存在,luajit源码参考,注意luajit的部分源码是编译生成的,昂库里面可能没有。
  3. 将获取到的c++堆栈函数,填写到cpp filter里面,这样可以过滤不符合堆栈信息的结果,比如:lj_meta_cache,rec_call_setup


image.png


  1. 点击watch监听游戏,当完成相关游戏操作后,取消watch即可生成lj_meta_cache.log,此时的log是经过cpp filter过滤后的
  2. 分析log,排查定位问题



目录
相关文章
|
6月前
|
Web App开发 容灾 安全
非功能关键知识总结
【2月更文挑战第4天】非功能关键知识总结
275 2
|
6月前
|
前端开发
SSM整合-前后台协议联调(列表功能、添加功能、添加功能状态处理、修改功能、删除功能)
SSM整合-前后台协议联调(列表功能、添加功能、添加功能状态处理、修改功能、删除功能)
81 0
|
6天前
|
JavaScript 搜索推荐 前端开发
DevDocs有哪些功能?
DevDocs有哪些功能?
14 4
|
1月前
|
SQL Oracle 关系型数据库
|
11月前
楼中楼回复评论功能的实现
@(真棒)装就完事了. 今天给写的评论系统增加了楼中楼功能,众所周知,楼中楼评论实现是有困难的,我的确也踩进了很多坑。 这里跟大家讲述我是如何实现的.
148 0
|
数据安全/隐私保护
主要功能
5.1.1 PowerPoint 2010的主要功能 PowerPoint 2010的主要功能是将各种文字、图形图表、音频、视频等多媒体信息以图片的形式展示出来。 在PowerPoint 2010中,将这种制作出的图片叫做幻灯片,而一张张幻灯片组成的文件叫做演示文稿文件。 其默认扩展名为.pptx 模板文件扩展名: potx 放映文件扩展名:ppsx 5.1.2 新建和打开演示文稿 启动PowerPoint 2010后,显示的窗口被称为演示文稿的工作窗口,该窗口主要由快速访问工具栏、选项卡、“幻灯片/大纲”窗格、幻灯片编辑窗格、备注窗功能区、格、任务窗格、状态栏、视图切换按钮和显示比
BXA
|
Web App开发 算法 安全
C++11:必须关注的一个功能
C++11是C++语言的一次重大更新,旨在解决一些C++03语言存在的问题,从而提高其可靠性和可用性
BXA
101 0
|
Python Serverless 容器
Funfile 功能介绍
前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。
5109 0
|
网络协议 开发者 存储
1-关于"小五物联"的功能介绍(使用介绍)
随着自己做的APP"小五物联"的功能的不断增加,为了方便使用者,对该APP的使用,用这篇文章做介绍,以后没更新一项功能就会重新编辑这篇文章.一,绑定设备(WIFI开关(MQTT))WIFI开关,主要是绑定WIFI模块实现远程控制具体绑定请看http://www.
1359 0
|
监控 关系型数据库 数据库