一.使用流程 Windows下的程序运行崩溃时,往往可以利用pdb文件快速解析出程序崩溃的具体位置,甚至可以对应到源代码的具体行数.macOS下的symbolicatecrash也具备相应的功能.对应于Windows下的pdb文件,macOS下的crash文件解析需要用到dSYM文件.这个文件正常情况下可能不会生成,需要在XCode进行设置.当程序崩溃时,通过symbolicatecrash对crash文件和dSYM文件中的符号进行映射,即可将crash文件中的内存地址转换为可读的字符串.以前的…
重点是dwarfdump --uuid命令 我们在iOS开发中会碰到的很多crash问题,如果Debug调试模式的话,我们可以往往很容易的根据log的输出定位到导致crash的原因,但对于已经上线的应用,或者是release环境包导致的crash,我们就需要一些特殊的手段来通过crash log进行分析定位了. 通过参考网上的一些资料,总结了一下,下面介绍一下通过dSYM文件以及crash log分析定位的方法. 1.导出crash log 通过Xcode的Organizer查看某台iphone…
来到新公司后,前段时间就一直在忙,前不久 项目 终于成功发布上线了,最近就在给项目做优化,并排除一些线上软件的 bug,因为项目中使用了友盟统计,所以在友盟给出的错误信息统计中能比较方便的找出客户端异常的信息,可是很多像数组越界却只给出了 *** -[__NSArrayM objectAtIndex:]: index 7 beyond bounds [0 .. 6]' 这类错误信息,如下图所示: 遇到这种问题如果通过 objectAtIndex 去检索错误的地方那将会是一个巨大的工作量. dSY…
什么是 dSYM 文件 Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件,位于 /Users/<用户名>/Library/Developer/Xcode/Archives 目录下,对于每一个发布版本我们都很有必要保存对应的 Archives 文件 (AUTOMATICALLY SAVE THE DSYM FILES 这篇文章…
dSYM文件缺失通常有两种情况**: 情况一:配置错误导致打包时没有生成dSYM文件 针对这种情况,通常是因为Project -> Build Settings下的Debug Information Format的值被设置为DWARF.需修改为DWARF with dSYM File后重新打包,才会生成新的dSYM文件. 情况二:配置正确,但打包后找不到dSYM文件 项目文件配置正常,打包发布时dSYM文件没有正确上传到git或者管理平台,此时可以从xcarchive文件中找到dSYM文件. X…
参考: http://blog.csdn.net/diyagoanyhacker/article/details/41247367 http://blog.csdn.net/diyagoanyhacker/article/details/41247389 http://blog.csdn.net/diyagoanyhacker/article/details/41247411 http://www.cnblogs.com/smileEvday/p/Crash1.html 未符号化的崩溃日志就象一…
时间2013-08-20 12:49:20 GoWhich原文  http://www.gowhich.com/blog/view/id/343 苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法) symbolicatecrash路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase…
崩溃分析方式:命令行解析Crash文件 通过Mac自带的命令行工具解析Crash文件需要具备三个文件 symbolicatecrash,Xcode自带的崩溃分析工具,使用这个工具可以更精确的定位崩溃所在的位置,将0x开头的地址替换为响应的代码和具体行数. 我们打包时产生的dSYM文件. 崩溃时产生的Crash文件. 1.获取.crash文件 获取崩溃信息方式: 使用友盟.蒲公英等第三方崩溃统计工具.->iOS 友盟第三方崩溃统计的解析-dSYM 自己实现应用内崩溃收集,并上传服务器. Xcode…
概述: 为什么 crash log 内 Exception Backtrace 部分的地址(stack address)不能从 dsym 文件中查出对应的代码? 因为 ASLR(Address space layout randomization),因为 ASLR 引入了一个 slide (偏移) . symbol address = stack address - slide; slide 可以在运行时 由 API 获取到 dyld_get_image_vmaddr_slide() 也可以根据…