0

I have a crash report from a production iOS app, which was automatically logged into our own server. The crash log is a string combination of [NSException description] and [NSException callStackSymbols], looks as follow:

Terminating app due to uncaught exception: *** setObjectForKey: object cannot be nil (key: dict_key). 

    0   CoreFoundation                      0x2f00dee3 <redacted> + 154
    1   libobjc.A.dylib                     0x397a4ce7 objc_exception_throw + 38
    2   CoreFoundation                      0x2ef4917f <redacted> + 818
    3   MyAppName                           0x0010ef3f MyAppName + 229183
    4   MyAppName                           0x000e5401 MyAppName + 58369
    5   MyAppName                           0x000e4ac1 MyAppName + 56001
    6   UIKit                               0x31843a33 <redacted> + 518

    ... (Removed for brevity)

Having this information, how can I produce a .crash file that can be read by symbolicatecrash command? Can I simply store this crash log in a text file and name it with .crash extension?

Thanks!

Andree
  • 3,033
  • 6
  • 36
  • 56
  • You need a full standard Apple formatted crash report to symbolicate this. There also seems too much information missing for manual line by line symbolication (like the load address of the app) – Kerni Sep 03 '14 at 08:34
  • 2
    The load address is `0xe4ac1 - 56001 = 0xD7000`. You need to use atos manually with this address to get the symbols for the stack frames of your app. See http://stackoverflow.com/questions/13574933/ios-crash-reports-atos-not-working-as-expected/13576028#13576028 – Kerni Sep 03 '14 at 08:58

1 Answers1

1

You'll need the dSYM file generated when you compile the app. To get this you should go to your .app file on Xcode and right click on it and show in finder, then you should create a folder with the dSYM file inside as well as your app and then run the atos command inside the folder: atos -arch armv7 -o YOURAPP.app'/'yourapp' 0xe4ac1 - 56001 = 0xD7000

Wish it helps!

David Bemerguy
  • 1,334
  • 11
  • 15
  • Hi David, thanks a lot. I saw something meaningful with dwarfdump command and the memory address 0xD7000! How did you come up with that number? It doesn't look like a simple hex subtraction. – Andree Sep 04 '14 at 10:10
  • Thats is just an example, you get the address you want to desymbolicate, it is one of the rows of the right column of your crash log – David Bemerguy Sep 04 '14 at 11:40