- 博客(7)
- 资源 (1)
- 收藏
- 关注
转载 获取iOS任意线程调用堆栈(五)完整实现:BSBacktraceLogger
转载自:https://toutiao.io/posts/aveig6/preview BSBacktraceLogger 是一个轻量级的框架,可以获取任意线程的调用栈,开源在我的 GitHub,建议下载下来结合本文阅读。 我们知道 NSThread 有一个类方法 callstackSymbols 可以获取调用栈,但是它输出的是当前线程的调用栈。在利用 Runloop 检测
2017-05-31 16:29:18 8350
转载 获取iOS任意线程调用堆栈(四)符号化实战
1. 相关API和数据结构 由于我们在上面回溯线程调用栈拿到的是一组地址,所以这里进行符号化的输入输出应该分别是地址和符号,接口设计类似如下: - (NSString *)symbolicateAddress:(uintptr_t)addr; 不过在实际操作中,我们需要依赖于dyld相关方法和数据结构: /* * Structure filled in by dladdr()
2017-05-31 12:27:22 1782
转载 获取iOS任意线程调用堆栈(三)符号化理论:从Mach-o结构分析类名方法名
下面来讲讲如何从Mach-o文件中分析出类名和方法名,也让我们了解下class-dump的原理。 Mach-o结构有两个节:__objc_classname 和 __objc_methname 其中就是类名和方法名。 其中__objc_classname的偏移为:ox7961 __objc_methname的偏移为0x6F9E 这里分析的arch文件,不是fat bina
2017-05-31 12:25:40 1398 1
转载 获取iOS任意线程调用堆栈(二)符号化理论:Mach-o文件结构
我们知道Windows下的文件都是PE文件,同样在OS X和iOS中可执行文件是Mach-o格式的。 所以我们如果要进行逆向分析,首先要熟悉Mach-o文件结构。 Mach-o包含三个基本区域: 头部(header structure)。 加载命令(load command)。 段(segment)。可以拥有多个段(segment),每个段可以拥有零个或多个区域(sectio
2017-05-31 12:24:24 768
转载 获取iOS任意线程调用堆栈(一)获取任意线程的调用栈地址列表
转载自:http://blog.csdn.net/jasonblog/article/details/49909163如果要获取当前线程的调用栈,可以直接使用现有API:[NSThread callStackSymbols]。但是并没有相关API支持获取任意线程的调用栈,所以只能自己编码实现。1. 基础结构一个线程的调用栈是什么样的呢?我的理解是应该包含当前线程的执行地址,并且从这个地址可以一级一...
2017-05-31 12:22:24 4870
原创 统计iOS项目代码行数
打开终端,输入如下命令: find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" | xargs wc -l 此命令会迭代子目录,会统计每个源代码文件行数及总数,统计的行数包含空行。 如果不希望统计空行,则使用如下命令: find . -name "*.m" -or -name "*.h" -
2017-05-15 16:53:54 433
原创 iOS崩溃日志收集
一、概述 iOS-App崩溃分为两种,一种是异常:NSException,一种是信号:Signal。 二、异常崩溃 1.NSException对象 (1)reason:崩溃原因。 (2)callStackSymbols:调用堆栈。 (3)name:崩溃名称 (4)userInfo:崩溃对象。 2.崩溃拦截: (1)声明异常拦截方法 static void unc
2017-05-01 15:06:49 708
工作量证明链解决拜占庭将军问题之模拟程序
2018-10-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人