问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在 iOS 的 crash log 上 debug

发布网友 发布时间:2022-04-21 15:41

我来回答

2个回答

热心网友 时间:2022-04-14 07:36

1.在提交新版本到AppStore时候一定要保留每个版本的.dSYM文件。无法定位crash的代码肯定是.dSYM文件和crash report对应的程序版本不一致。
2.由用户反馈的当前版本的crash report可以在iTunesConnect下载。如果是存在设备上的,可以用Organizer导出
3.打开.crash文件,参考Hardware Model确定故障设备是armv6还是armv7架构。
4.利用.dSYM定位调用栈记录中未确定的offset。

比如有如下记录:

  Last Exception Backtrace:
0 CoreFoundation 0x3440a8bf __exceptionPreprocess
1 libobjc.A.dylib 0x3465a1e5 objc_exception_throw
2 CoreFoundation 0x3440a7b9 +[NSException raise:format:]
3 CoreFoundation 0x3440a7db +[NSException raise:format:]
4 CoreFoundation 0x3437762b -[__NSCFDictionary setObject:forKey:]
5 MyApp 0x000e6f8b 0x1000 + 941963
6 MyApp 0x0004140b 0x1000 + 263179
...//更多stacktrace
  使用atos命令和.dSYM确定0x000e6f8b和0x0004140b的对应代码。在命令行中输入:

  atos -o MyApp.app/MpApp -arch armv7 0x000e6f8b 0x0004140b
  得到如下结果:

  -[MyViewController foo:] (in MyApp) (MyViewController.m:457)
-[MyDelegate bar:] (in MyApp) (MyDelegate.m:441)

这样就确定了调用栈中offset对应的源代码位置。注意如果此时.dSYM文件版本不对,会得到完全无用的错误结果。之后就可以根据所有信息综合分析,确定crash的原因并修正。

热心网友 时间:2022-04-14 08:54

  1.在提交新版本到AppStore时候一定要保留每个版本的.dSYM文件。无法定位crash的代码肯定是.dSYM文件和crash report对应的程序版本不一致。
  2.由用户反馈的当前版本的crash report可以在iTunesConnect下载。如果是存在设备上的,可以用Organizer导出
  3.打开.crash文件,参考Hardware Model确定故障设备是armv6还是armv7架构。
  4.利用.dSYM定位调用栈记录中未确定的offset。

  比如有如下记录:
  Last Exception Backtrace:
  0 CoreFoundation 0x3440a8bf __exceptionPreprocess
  1 libobjc.A.dylib 0x3465a1e5 objc_exception_throw
  2 CoreFoundation 0x3440a7b9 +[NSException raise:format:]
  3 CoreFoundation 0x3440a7db +[NSException raise:format:]
  4 CoreFoundation 0x3437762b -[__NSCFDictionary setObject:forKey:]
  5 MyApp 0x000e6f8b 0x1000 + 941963
  6 MyApp 0x0004140b 0x1000 + 263179
  ...//更多stacktrace
  使用atos命令和.dSYM确定0x000e6f8b和0x0004140b的对应代码。在命令行中输入:
  atos -o MyApp.app/MpApp -arch armv7 0x000e6f8b 0x0004140b
  得到如下结果:
  -[MyViewController foo:] (in MyApp) (MyViewController.m:457)
  -[MyDelegate bar:] (in MyApp) (MyDelegate.m:441)

  这样就确定了调用栈中offset对应的源代码位置。注意如果此时.dSYM文件版本不对,会得到完全无用的错误结果。之后就可以根据所有信息综合分析,确定crash的原因并修正。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我在石家庄我的显卡坏了过了保修期我想问一下哪里可以修? 梦见蹲了半天的茅房 2016寒假小结作文怎么写 荣耀9,为什么电量现在越来越不耐用,之前更 哪些是易燃易爆场所 加油站有哪些消防安全隐患 说美国和苏联可以毁灭地球若干次的说法是怎么算出来的? 上证指数的年线怎么看? 早教中心需要什么证件 开办早教中心需要哪些许可证 苹果手机系统崩溃是为什么 ios crash 符号化 app文件在哪 我的ios app崩溃了,该怎么处理 如何分析iOS app crash 报告 如何分析 ios 系统栈 crash ios crash log怎么获取 itoos里的崩溃日志是什么意思? 在ios开发中怎么获取应用崩溃日志 iOS项目常见的崩溃原因有哪些 如何看懂iOS的Crash报告 IOS APP在用户设备发生crash,应该怎么修复 什么是网管专家? 如何设置文本文档,权限,求情帮助 如何设置文本文档的文件内容 文本效果怎样设置 手机怎么设置文档? 电脑怎么设置文本文档 如何设置文档别人看不能编辑 怎样设置文档的字符格式 怎么样在excel里设置文本 苹果5 S更新系统崩溃了,怎么办?大神求解救呀! iOS如何忽略crash继续让app运行下去 404 Not Found ios 怎样看crash reporter ios崩溃日志在哪 IOS 数组越界崩溃 为什么 哪家便当比较好吃? 南京新街口哪家便当好?求推荐 成都盒饭外卖哪家的好吃? 怎么样可以加你微信? 加热便当盒哪个牌子好?求推荐。 南京铁路便当哪家的好吃 想买自热便当,不知道哪家更安全一点呢? 怎么和喜欢的男生加微信? 哪家自热便当的回头客比较多啊? 北京哪家全聚德最好吃 如何加码 哪家自热便当好吃不贵? 如何搭讪加对方微信? 石家庄快餐、外卖、盒饭哪家比较好?推荐一下