iOS 轻量级调用栈分析器 BSBacktraceLogger
- 授权协议: GPL
- 开发语言: Objective-C
- 操作系统: iOS
- 软件首页: https://github.com/bestswifter/BSBacktraceLogger
- 软件文档: https://github.com/bestswifter/BSBacktraceLogger/blob/master/README.md
- 官方下载: https://github.com/bestswifter/BSBacktraceLogger/archive/master.zip
软件介绍
BSBacktraceLogger,一款轻量级调用栈分析器,用于记录线程的调用栈。它只有一个类,四百行代码。它支持现有所有模拟器、真机的 CPU 架构,可以获取任意线程的调用栈,因此可以在检测到 runloop 检测到卡顿时获取卡顿处的代码执行情况。
示例代码:
#import "BSBacktraceLogger.h"
- (void)viewDidLoad {
[super viewDidLoad];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
BSLOG // 打印当前线程的调用栈
BSLOG_ALL // 打印所有线程的调用栈
BSLOG_MAIN // 打印主线程调用栈
});
[self foo];
}
- (void)foo {
[self bar];
}
- (void)bar {
while (true) {
;
}
}
定义了三个宏用于快速输出,或者调用 [BSBacktraceLogger bs_backtraceOfCurrentThread] 等函数获取字符串格式的调用栈。
样例
上述代码中,BSLOG_MAIN 这个宏的输出结果如下:
2016-08-27 18:33:20.017 BSBacktraceLogger[25215:862569] Backtrace of Thread 1803: KtBacktraceLogger 0x10b831f4c -[ViewController bar] + 12 KtBacktraceLogger 0x10b831f2b -[ViewController foo] + 43 KtBacktraceLogger 0x10b831fe0 -[ViewController viewDidLoad] + 128 UIKit 0x10c813984 -[UIViewController loadViewIfRequired] + 1198 UIKit 0x10c813cd3 -[UIViewController view] + 27 UIKit 0x10c6e9fb4 -[UIWindow addRootViewControllerViewIfPossible] + 61 UIKit 0x10c6ea69d -[UIWindow _setHidden:forced:] + 282 UIKit 0x10c6fc180 -[UIWindow makeKeyAndVisible] + 42 UIKit 0x10c670ed9 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4131 UIKit 0x10c677568 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1769 UIKit 0x10c674714 -[UIApplication workspaceDidEndTransaction:] + 188 FrontBoardServices 0x10f0e18c8 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24 FrontBoardServices 0x10f0e1741 -[FBSSerialQueue _performNext] + 178 FrontBoardServices 0x10f0e1aca -[FBSSerialQueue _performNextFromRunLoopSource] + 45 CoreFoundation 0x10c1e8301 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 CoreFoundation 0x10c1de22c __CFRunLoopDoSources0 + 556 CoreFoundation 0x10c1dd6e3 __CFRunLoopRun + 867 CoreFoundation 0x10c1dd0f8 CFRunLoopRunSpecific + 488 UIKit 0x10c673f21 -[UIApplication _run] + 402 UIKit 0x10c678f09 UIApplicationMain + 171 KtBacktraceLogger 0x10b8338ff main + 111 libdyld.dylib 0x10ea9c92d start + 1
说明
Xcode 的调试输出不稳定,有时候存在调用 NSLog() 但没有输出结果的情况,建议前往 控制台 中根据设备的 UUID 查看完整输出。
真机调试和使用 Release 模式时,为了优化,某些符号表并不在内存中,而是存储在磁盘上的 dSYM 文件中,无法在运行时解析,因此符号名称显示为 。
从需求到产品:0岁产品经理进阶之道
权莉 / 人民邮电出版社 / 2018-7 / 49.80元
本书主要针对刚入职的初级产品经理,从贴近工作状态的场景切入,对各阶段的知识点进行分类总结,旨在提供一套经过实践检验的产品方法论,为读者从初级产品经理成长为产品经理奠定坚实的基础。 书中提炼的方法和案例涵盖初级产品经理工作的方方面面,从基本技能到思维方式,从需求管理到产品规划定义,从框架选型到流程梳理,从工作模块拆解到案例剖析,用具体且贴合实际工作场景的内容,还原真实的产品工作方法及实践案例,既有方......一起来看看 《从需求到产品:0岁产品经理进阶之道》 这本书的介绍吧!
