GYMonitor是用于监控iOS app性能状况的代码库,目前包括有FPS监控,发现FPS过低会自动产生堆栈,便于在开发过程中发现卡顿问题。
# Podfile
platform :ios, '7.0'
target 'YourTarget'
pod 'GYMonitor'
GYMonitor
整个文件夹到已有的Xcode工程。值得注意的是GYMonitor
里面有CrashReporter.framework
这个库。#import "GYMonitor.h"
dsymInfo
文件夹拷贝到工程文件的同一个目录,然后在工程文件中的Build Phases
最后加上一个Run Script
,脚本内容为python ${PROJECT_DIR}/dsymInfo/backup.py
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// normal code...
[self startMonitor];
return YES;
}
- (void)startMonitor {
[GYMonitor sharedInstance].monitorFPS = YES;
[GYMonitor sharedInstance].showDebugView = YES;
[[GYMonitor sharedInstance] startMonitor];
}
- (void)stopMonitor {
[GYMonitor sharedInstance].monitorFPS = NO;
[GYMonitor sharedInstance].showDebugView = NO;
[[GYMonitor sharedInstance] startMonitor];
}
CADisplayLink
获取屏幕刷新频率,输出FPS的值CrashReporter
获取全部线程的堆栈,保存为$currentController.crash
文件dsymutil
产生dSYM文件然后保存,为了节省空间最多保存5个。还有为它们在所的目录添加Spotlight索引,反解堆栈时能让mac os自动找到它们symbolicatecrash
反解堆栈,为了方便,我使用了Automator
为右键点击*.crash文件时添加服务项反解堆栈
,点击后会运行脚本去反解堆栈。