我正在查看Apple提供的崩溃报告
Hardware Model: iPhone4,1
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2012-11-18 16:03:44.951 -0600
OS Version: iOS 6.0.1 (10A523)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x51fe5264
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x352925b0 objc_msgSend + 16
1 MYAPP 0x0006573a -[MyViewController(Images) didReceiveImage:context:etag:expires:] + 42
2 MYAPP 0x0004fb26 -[MyImageTask didReceiveImage:] + 98
3 Foundation 0x361ac8e8 __NSThreadPerformPerform
4 CoreFoundation 0x3b37d680 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
5 CoreFoundation 0x3b37cee4 __CFRunLoopDoSources0 …
Run Code Online (Sandbox Code Playgroud) 我有BugSense的崩溃报告,因此我有关于崩溃的内存位置的信息,但它们没有象征性.此外,Bug Sense不会发送传统的崩溃报告,但仍会给我一个bug跟踪.因此,我尝试使用Atos来获取崩溃的确切位置.我已经在XCode 4中存档了应用程序并使用该版本提交到应用程序商店,因此我有一个dSYM文件.我运行了以下代码:
atos -arch armv7 -o MyApp.app.dSYM 0x001057e9
Run Code Online (Sandbox Code Playgroud)
但是,我没有得到正确的输出,而是收到错误:
atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7
Run Code Online (Sandbox Code Playgroud)
有关为什么会发生这种情况的任何建议?我没有从应用程序中删除调试符号.
试图调试应用程序.麻烦的是我找不到这个程序.
symbolicatecrash.sh
sudo cp /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/symbolicatecrash /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
它是单独的下载吗?我正在使用XCode 3.2.3
谢谢.
组织者中新的Xcode 7"Crashes"选项卡显示了AppStore为我的应用程序发生的一些崩溃.根据文档,应该有一个堆栈跟踪.但是,6次崩溃都没有象征着堆栈跟踪:
当然,当我提交到商店时,我包含了dsym和调试信息.我仍然在我的组织者中提交了提交内容,因此我的机器上仍然存在dsyms.如何在此获得正确的堆栈跟踪?
这不是问题,因为我已经找到了解决方法.我正在发布它,以便其他人可以利用我花在它上面的时间,并使用我建议的解决方法.
我有一些奇怪的崩溃报告 - 一行重复多次:
...
0x190e08000 - 0x190e49fff Notes arm64 <f45c09ce977b3282ab0e879252dfebee> /System/Library/PrivateFrameworks/Notes.framework/Notes
0x190f9c000 - 0x190fa6fff NotificationsUI arm64 <73dcb247ed183ce7bb330d7bb55f93bd> /System/Library/PrivateFrameworks/NotificationsUI.framework/NotificationsUI
0x190fa8000 - 0x190faafff OAuth arm64 <c2658cb3208b342dbe1e91cea30ebdd5> /System/Library/PrivateFrameworks/OAuth.framework/OAuth
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff …
Run Code Online (Sandbox Code Playgroud) 因此,我使用Xcode 6的技术似乎已被弃用,symbolicatecrash.sh脚本不再位于xcode包中.相反,在Xcode 6具有脚本的同一文件夹路径中有一个名为symbolicatecrash的可执行文件.
有谁知道Apple移动symbolicatecrash.sh进行手动符号化?Xcode 6中的脚本使用Xcode 7运行错误.
我有来自不同用户的许多崩溃日志,我有不同的构建和dSYM文件现在如何确保特定的崩溃日志属于哪个构建和dSYM文件.
有没有办法检查crashlog和dSYM是否属于同一个版本......?
问候,
我无法设法使我的代码符号化...我读了"下面"的部分:
给定崩溃报告,匹配的二进制文件及其.dSYM文件,符号化相对容易.Xcode Organizer窗口有一个选项卡,用于显示当前所选设备的崩溃报告.您可以在此选项卡中查看外部收到的崩溃报告 - 只需将它们放在适当的目录中即可.这与第一部分中描述的Mac OS X目录相同.您连接的设备无关紧要,但放置崩溃报告的目录必须是系留和选定设备的目录.
没有必要将二进制文件和.dSYM文件放在任何特定位置.Xcode使用Spotlight和UUID来定位正确的文件.但是,有必要将两个文件放在同一目录中,并且此目录是Spotlight索引的目录.您的主目录中的任何位置都应该没问题.
但它对我不起作用......这就是我所做的:
其余的都应该是自动的,对吗?但崩溃日志尚未象征化......
任何评论欢迎.
干杯.
高堤耶.
这是一个非常奇怪的问题.我想我一定做错了什么,但我不知道它是什么.我已经使用symbolicatecrash几年没有问题.我看到的问题是symbolicatecrash没有显示系统库的符号,但它显示了我的应用程序的符号.我已经尝试了一切我能想到的解决这个问题而没有运气.
请注意,我在三台不同的机器上获得了相同的结果,2 Lion,1 Snow Leopard.
示例命令行:/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash /Users/mike/Downloads/mycrash-iPad.crash
另请注意,当我将文件拖到XCode 4.2日志管理器窗口的日志部分并等待XCode符号化文件时,我得到相同的结果.
以下是我的代码中部分符号化符号崩溃的示例:
Last Exception Backtrace:
0 CoreFoundation 0x33dae8bf 0x33cf5000 + 759999
1 libobjc.A.dylib 0x354ca1e5 0x354c1000 + 37349
2 CoreFoundation 0x33dae7b9 0x33cf5000 + 759737
3 CoreFoundation 0x33dae7db 0x33cf5000 + 759771
4 CoreFoundation 0x33d1b6bb 0x33cf5000 + 157371
5 myZenfolio 0x001a551d -[GtDataSourceManager setDataSource:forKey:] (GtDataSource.m:59)
6 myZenfolio 0x0004c793 -[ZfUserAccountViewController doUpdateDataSourceManager:] (ZfUserAccountViewController.m:202)
7 myZenfolio 0x0022f853 -[GtEditObjectViewController tableViewWillReloadData:] (GtEditObjectViewController.m:803)
8 CoreFoundation 0x33d0d22b 0x33cf5000 + 98859
9 myZenfolio 0x002557b9 -[GtTableView reloadData] (GtTableView.m:48)
10 myZenfolio 0x0004c36d -[ZfUserAccountViewController _updateFromCache] (ZfUserAccountViewController.m:160)
11 …
Run Code Online (Sandbox Code Playgroud) 我非常熟悉iOS应用程序的崩溃日志是如何被象征化的,但这个是一个令人头疼的问题.
我的MyApp版本为2345,通过TestFlight作为测试版发布,使用Xcode 7.2(7C68)中的普通存档然后上传到App Store流程.
当我在xcarchive中为二进制文件执行dwarfdump时,我得到以下结果:
dwarfdump --uuid MyApp.app/MyApp
UUID: 0BDA6D6F-3C0D-339E-842F-C2CB04199E10 (armv7) MyApp.app/MyApp
UUID: B2A69BEC-DF5E-33EA-A9E0-490EBF03074C (arm64) MyApp.app/MyApp
Run Code Online (Sandbox Code Playgroud)
这是dSYM文件的dwarfdump:
dwarfdump --uuid MyApp.app.dSYM
UUID: 0BDA6D6F-3C0D-339E-842F-C2CB04199E10 (armv7) MyApp.app.dSYM/Contents/Resources/DWARF/MyApp
UUID: B2A69BEC-DF5E-33EA-A9E0-490EBF03074C (arm64) MyApp.app.dSYM/Contents/Resources/DWARF/MyApp
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
但是,我通过Organize> Crashes for build 2345收到了一个崩溃,它具有不同的二进制UUID:
0x100054000 - 0x1000fffff myapp arm64 <3715db2438743cf5aac1742d9a214c2c> /var/mobile/Containers/Bundle/Application/7313BC02-3F90-4F94-82E2-CBDC941E5D68/MyApp.app/myapp
0x100144000 - 0x1001e7fff AWSCore arm64 <c2aa13236d0437b98194c0487db69e68> /var/mobile/Containers/Bundle/Application/7313BC02-3F90-4F94-82E2-CBDC941E5D68/blink.app/Frameworks/AWSCore.framework/AWSCore
....
Run Code Online (Sandbox Code Playgroud)
我确信崩溃报告是针对相同的构建,但UUID在这里是3715db2...
我期待它的时候b2a69bec...
我确实启用了bitcode,所以我尝试从Organizer Archive页面下载dSYMs(尽管我已经构建了arm64,因此Apple不应该这样做)并且它在崩溃报告中为其他UUID /二进制文件检索了dSYM但是没有myapp
二进制文件.实际上,myapp
二进制文件是唯一没有下载相应dSYM的二进制文件!
所以有几个问题:
3715db2438743cf5aac1742d9a214c2c
myapp二进制文件的版本来自哪里?