02 2021 档案
摘要:系统先读取App的可执行文件(Mach-O文件),从里面获得dyld的路径,然后加载dyld,dyld去初始化运行环境,开启缓存策略,加载程序相关依赖库(其中也包含我们的可执行文件),并对这些库进行链接,最后调用每个依赖库的初始化方法,在这一步,runtime被初始化。当所有依赖库的初始化后,轮到最
阅读全文
摘要:https://xiaozhuanlan.com/topic/9273604158 先来张渲染的流程图: 这张图其实有很多误导,我的更改如下: 可以看到整个流程是一个pipeline(一次pipeline要跨越三帧)形式的,下面对每个步骤都做一个解释: 1.Handle Events: 处理事件,比
阅读全文
摘要:通信的本质是报文的定义与解释机制 协议:信息的表达与解释
阅读全文
摘要:The breakpoint exception type indicates a trace trap interrupted the process. A trace trap gives an attached debugger the chance to interrupt the proc
阅读全文
摘要:iOS开发者常见的 UNIX 信号 如下: UNIX 信号注释 SIGSEGV 访问无效的内存地址。地址存在,但是应用程序无法访问。 SIGABRT 程序崩溃。由 C函数 abort() 初始化。通常意味着系统检测到某些事务出错,例如 assert() 或者 NSAssert() 校验失败。 SIG
阅读全文
摘要:该信号表示总线错误,通常与SIGSEGV混合。虽然类似(都代表尝试访问无效内存),但当地址不存在或更常见的无效对齐时,会发生SIGBUS 。换句话说,物理地址无效(这与逻辑地址无效的SIGSEGV不同)。 找不到: In computing, a bus error is a fault raise
阅读全文
摘要:1) SIGBUS(Bus error)意味着指针所对应的地址是有效地址,但总线不能正常使用该指针。通常是未对齐的数据访问所致。2) SIGSEGV(Segment fault)意味着指针所对应的地址是无效地址,没有物理内存对应该地址。 非法映射 vs 非法获取、无定义(映射) 总线错误 对一个错误
阅读全文
摘要:《2》 int 3 INT 3 是中断指令的一种特殊形式,仅有一个字节长。 调试器将该指令当作软件中断指令来用。调试的时候,当程序中的某一位置加断点的时候,调试器会把断点处指令编码的第一个字节替换为INT 3指令的编码。 当程序执行到INT 3,回向调试器申请系统调用,调试器因此获得CPU控制权。之
阅读全文

浙公网安备 33010602011771号