关于crash:iOS-从没有转换符号的crash日志里精准定位错误代码
如何在没有符号的crash日志里定位错误代码,这的联合crash日志,和iDA能查看.首先咱们来剖析一下crash日志的构造1.首先看到图中的crash日志堆栈信息的0x102920000示意是mach-o的入口地址,+299612示意是mach-o里的偏移地址,转换成16进制为0x4925c 图一2.在ida中查看0x4925c的地址所在汇编代码:是main里的代码 图二这和复原符号之后的代码齐全吻合: 图三3.别急下面的crash代码只是一部分,咱们来还原真正的crash代码,last exception Backtrace ,咱们要找到堆栈信息里属于以后app的地址.@1.第一步确定MTSS_SDKTestDemo在内存中的地址范畴,crash日志下拉到Binary Images段,查看得悉地址范畴为0x102920000~0x102c57fff @2.找到last exception Backtrace中在0x102920000~0x102c57fff范畴的地址,计算出他们的偏移量0x1029682c8 - 0x102920000 -> 0x482C80x10297c3b4 - 0x102920000 -> 0x5C3B40x10297c09c - 0x102920000 -> 0x5C09C0x102977564 - 0x102920000 -> 0x57564 0x482C8在ida查看为,定位到为+[SignalCrashTest throwNil]办法中执行字典赋值导致的nil解体