debug tool for game develop

本文将介绍各类开发调试工具的主要用途以及使用方式

CPU

SimplePef

PerfDog

Perfetto

VTune

Superluminal

Unreal Insights

启动命令行中添加如下参数:

1
-tracehost=主机ip -trace=default,cpu,memory,gpu -statnamedevent

启动UnrealInsights后再启动进程,则会自动开始捕获性能数据

Android可修改UE4CommandLine.txt或通过adb shell setprop debug.ue.commandline \"启动参数\"设置

框选范围后可在右侧Counter界面查看该段时间内的Counter数,用于统计一段时间内的平均开销

在日志窗口中点击某条日志后时间轴会定位到对应帧:

Android Studio Profiler

WPA & WPR

PerfSDK

XCode Instruments

GPU

Renderdoc

Renderdoc在Windows上采用DirectX模拟的方式Replay其它图形API,Android的Hook分为Layer与非Layer的形式

DirectX程序需使用D3D_DEBUG创建Device才能截帧,Android需启用debuggable

当前存在的问题

  • 贴图Preview

Mobile上的ASTC贴图无法正确显示,比如UE中某张贴图格式指定为BGRA,在Mobile上会被压缩为ASTC

由于PC上是以DX进行模拟,因此只能以RGBA进行显示,因此Renderdoc Preview会出现错误

  • 运算精度

比如RGBA16F的贴图,由于IEEE 16Bit Float的有效精度为11位,最多显示2048。

当计算结果超出2048时,显示结果将会出现错误。

NSight

Snapdragon Profiler

  • 查看带宽:GMEM Load/Store

Mali Offline Tool

Arm Graphics Tool

Adreno GPU

Android GPU Inspector

PVRTune

Radeon GPU Profiler

XCode

Memory

Adroid Address Sanitizer

HWAddress Sanitizer

Loli Profiler

Unreal Memory Report

Unreal LowLevelMemory

可使用PerfreportTool可视化CSV:

StompMalloc

该模式利用缺页机制实现检测,由于PC暂不支持Address Sanitizer,该方案依然可考虑使用

Unreal Memory Insights

ADB

1
adb shell dumpsys memoryinfo

UE高级性能剖析技术 – Android内存分布和优化

XCode

  • Address Sanitizer
  • Zombie Object
  • Malloc History
  • Memory Graph

Decompile

IDA

Android真机调试

包体要求:

  • debuggable为true: UE打包时ForDistribution设置为False即可

启动Android_Server

ADB连接手机后打开Android Studio,随便新建或打开一个项目,找到Device File Explorer

Device File Explorer

找到目标应用,如:/data/data/com.lilithgames.xgame.gp,在其上右键, 选择Upload

Upload File To Android

在打开的文件选择框中选择android_server64(32位的选android_server),该文件位于:

  • IDAPro安装目录/dbgsrv/android_server64

成功将android_server64上传至手机后,在cmd窗口执行:

  • 进入shell环境:adb shell
  • 执行run-as: run-as com.lilithgames.xgame.gp
  • 提权: chmod 777 android_server64
  • 启动server:
1
2
3
4
5
6
7
# android10及以上使用该命令
IDA_LIBC_PATH=/apex/com.android.runtime/lib64/bionic/libc.so ./android_server64

# android10以下使用该命令
./android_server64

adb shell am start -D -n com.lilithgames.xgame.gp/com.epicgames.ue4.SplashActivity

Listen Android Server

此时cmd窗口可见到监听23946端口的提示,接下来再开一个cmd窗口用于转发端口:

1
adb forward tcp:23946 tcp:23946

Attach Debug

设置调试器:这里是用Remote ARM Linux/Android debugger

Set Debugger

打开Process Option,设置调试信息:

Set Debugger Info

接下来选择Attach To Process并选择目标进程进行挂载:

Attach To Process

其它命令:

  • 查询端口占用:adb shell netstat -tulpn
  • 提权:adb shell chmod 777 /data/local/android_server64
  • 读取so BuildID: readelf -n xxx.so

x64dbg

preintegrated skin rendering perlin-noise

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×