Under iOS, is there a way to determine which architecture was being executed in a crash report?
Given a crash report (non-symbolicated) on iOS, is there a way to determine which architecture (armv6 or armv7) was being executed by the device?
Why do I ask? I have received some crash reports that are not associated with an archived dSYM/executable. As such, I am unable to symbolicate them with the automated tools. I am wanting to experiment with changing the recorded UUID in the crash files to a release where the dSYM was preserved (the changes between the two releases are probably just resource file changes[images], so the compiled code should be identical). This may allow me to use the automated tools to symbolicate the reports and extract some meaningful crash data.
dwarfdump reveals that the executable and dSYM that I have match as expected, but it also shows that there are two architectures in each (fat binary) armv6 and armv7. To be abl开发者_JS百科e to quickly substitute the UUIDs into the crash reports, I need to know what architecture was used by the device prior to the crash.
To answer the original question more directly (I hope), in the crash log there is a "Binary Images" section. This explicitly states the architecture that was running, as in: " Binary Images: 0x1000 - 0x167fff +appname armv7 <8195d6729b973c6190ab00f36dfb1dd6> /var/mobile/Applications/90AA05D9-0094-48BC-BD0A-CE4C1F1B6A93/appname.app/appname
" In the above example it indicates "armv7". If the armv6 versio was running, it would have said armv6 instead
See iOS Debugging Magic (Technical Note TN2239) and Understanding and Analyzing iPhone OS Application Crash Reports (Technical Note TN2151).
Jeff
精彩评论