1

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 able to quickly substitute the UUIDs into the crash reports, I need to know what architecture was used by the device prior to the crash.

xyzzycoder
  • 1,831
  • 13
  • 19
  • 1
    possible duplicate of [Under iOS, does anyone know how UUID's are generated for executables and what information may be encoded therein?](http://stackoverflow.com/questions/4941080/under-ios-does-anyone-know-how-uuids-are-generated-for-executables-and-what-inf) – WrightsCS Feb 09 '11 at 03:43
  • Actually, it's not - which is why I entered two, separate questions. – xyzzycoder Feb 09 '11 at 04:06

2 Answers2

1

See iOS Debugging Magic (Technical Note TN2239) and Understanding and Analyzing iPhone OS Application Crash Reports (Technical Note TN2151).

Jeff

jww
  • 97,681
  • 90
  • 411
  • 885
  • Jeff, cool pointers, but I do not see the answer to the question? – xyzzycoder Mar 29 '11 at 20:37
  • xyzzcoder - I did a little digging and could not find anything. I asked the same question on GCC mailing list and got a 'not appropriate' response. Perhaps the GDB mailing list, or the GLIBC mailing list (?) might be helpful. – jww Mar 30 '11 at 18:32
  • According to 'Resolving a crash address to position in code' [1], it comes from the crash log (See Zitzmann's answer). [1] http://lists.apple.com/archives/cocoa-dev/2011/Apr/msg00544.html – jww Apr 18 '11 at 21:02
  • Determining the address of the crash is not the same as determining which architecture was in-use. – xyzzycoder Apr 20 '11 at 16:35
  • From Zitzmann: "... include the architecture from the crash log". Apparently, the architecture is in the crash log. – jww Apr 21 '11 at 02:12
1

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

Peter Y
  • 220
  • 2
  • 3