Skip to content

Memory instrumentation tool for android app&game developers.

License

Notifications You must be signed in to change notification settings

Daniellin1207/loli_profiler

Repository files navigation

[TOC]

写在前面

LoliProfiler已正式开始OTeam孵化的工作,欢迎对安卓内存优化感兴趣的同事加入

若您觉得工具对您有所帮助,并支持我们的开发,可以用Star+Watch来表示您的支持 😄

最新版本可在WeTest商店下载体验,OTeam地址

性能已在大型UE4项目验证(骁龙855及以上CPU可较流畅体验,约增加 1.6x-2.2x Overhead)

目前官方已验证且高效的支持UE引擎(4.24、4.25),Unity引擎(5.6、2017.4、2018.4)

其他版本的UE4或Unity引擎可联系我协助测试

使用过的项目

《全民K歌》 《微视Android》 《秦时明月世界》 《天涯明月刀手游》
评测 评测

若本工具对您所在的项目组有所帮助,欢迎联系我更新此列表

Loli Profiler

轻量开源内存分析工具(Lightweight Opensource profiLing Instrument)

支持Windows7/10与MacOSX(Mojave+)

可前往LoliProfiler的Wetest商店页面下载最新版程序

使用手册白皮书常见问题WeTest商店

特性

  • 支持Windows 10与Mac OSX(Mojave+)操作系统
  • 可以Profile几乎所有Debuggable的程序(Root后的设备可Profile所有程序)
  • 支持程序运行中注入
  • 整合动态库后,支持调试未加壳加密的Release版程序
  • 运行流畅(使用C++与QT开发),内存占用低(Streaming数据优化)
  • 通过TCP Socket实时传输数据
  • 数据分析:TreeMap、CallTree、内存碎片
  • 自动截图、Meminfo图表
  • 支持最高效的堆栈回溯方案

开发团队

Name BG
xinhou IEG互动娱乐事业群/天美工作室群/天美J1工作室/引擎技术组
ikeshi IEG互动娱乐事业群/品质管理部/WeTest产品中心/APM项目组
looperzeng 公司其他组织/腾讯音乐娱乐/QQ音乐业务线/社区产品部/商业产品中心/Android开发组
pisazzpan 公司其他组织/腾讯音乐娱乐/QQ音乐业务线/社区产品部/平台产品中心/Android开发组
ashenzhou IEG互动娱乐事业群/研发效能部/GCloud技术服务中心/同步技术研发组
nicochen IEG互动娱乐事业群/魔方工作室群/魔术师工作室/S1产品中心/UA预研组/程序组/前台开发组
togchen IEG互动娱乐事业群/光子工作室群/量子工作室/国际化开发中心/PUBGM项目组/客户端组/EVO组
peihualin IEG互动娱乐事业群/光子工作室群/R工作室/X-Game项目组/前台程序组
luckyguo 公司其他组织/腾讯音乐娱乐/QQ音乐业务线/音乐产品质量中心/专项测试开发组
georgehu IEG互动娱乐事业群/光子工作室群/量子工作室/国际化开发中心/统筹支持组/预研支持组
mathewchen PCG平台与内容事业群/短视频社区产品部/工具产品中心/Android研发组

排名不分先后

编译

环境

  • QT 5 或更高(安装QtCharts插件)
  • C++11 编译器,CMake
  • Android NDK r16b / r20
  • Visual Studio 2017(Windows 系统需要安装到 C 盘默认路径)

一键构建

Mac:

export QT5Path=/Users/xinhou/Qt5.14.1
export Ndk_R16_CMD=/android-ndk-r16b/ndk-build
export Ndk_R20_CMD=/android-ndk-r20b/ndk-build
sh build.sh

Windows:

set QT5Path="D:/SDK/QT/5.14.1/msvc2017_64"
set MSBUILD_EXE="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe"
set Ndk_R16_CMD="/android-ndk-r16b/ndk-build.cmd"
set Ndk_R20_CMD="/android-ndk-r20b/ndk-build.cmd"
build.bat

ChangeList

v1.0.6

修复TCP Socket数据处理的BUG,提升大型项目数据采集的稳定性

v1.0.5

保留SMaps段中的完整名称,将intercept改为attach to更易理解

v1.0.4

默认使用run-as cat获取smaps,更稳定,失败后再fallback到走socket

v1.0.2

CI自动构建jdwputil动态库,提供UE4插件,方便UE4项目使用调试Release版APK的功能

v1.0.1

提升了网络相关代码的稳定性

提升了重复测试时的稳定性

v0.9.9d

提供接口支持Hook使用内存池的进程

可将单条内存申请记录翻译为代码文件+行号,方便定位问题

v0.9.9b

实现了数据Streaming功能,有效降低了内存占用

可对大型(游戏)项目进行长时间的数据采集

v0.9.9

支持基于Framepointer的堆栈回溯优化,已在UE4.24、4.25上测试有效

性能优于插桩优化,可参考此教程对您的UE4项目进行打包

优化了结束采集后的内存地址分类步骤,速度提升10x

优化了离线函数地址翻译步骤(感谢lusliu提供的思路),速度提升20x

v0.9.8

支持调试经过编译器插桩优化的UE4的APK,可将多线程情况下的堆栈获取速度提升10倍

可参考此教程对您的UE4项目进行打包,即可对APK进行更高效的调试

链接

About

Memory instrumentation tool for android app&game developers.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 60.0%
  • C++ 34.1%
  • Python 3.9%
  • CMake 0.6%
  • Batchfile 0.5%
  • QMake 0.4%
  • Other 0.5%