How to symbolize the infrastructure of an iOS system such as UIKit?

I am working on UncaughtExceptionHandler on iOS:

I register a handler:

 NSSetUncaughtExceptionHandler(&myHandler); 

I get a callback in Crash App,

 void myHandler(NSException * exception) { //i can get stack symbols from //exception.callStackSymbols; } 

Here are the stacks I get:

 6 UIKit 0x000000018a6622c8 <redacted> + 612 7 UIKit 0x000000018a678b88 <redacted> + 592 8 UIKit 0x000000018a678814 <redacted> + 700 9 UIKit 0x000000018a671d50 <redacted> + 684 10 UIKit 0x000000018a644f74 <redacted> + 264 

I want to symbolize the "edited" part.

What I tried:

  • System framework and dsyms file:
 /Users/my_user/Library/Developer/Xcode/iOS\ DeviceSupport/8.4.1\ \(12H321\)/symbols/system/Library/Frameworks/UIKit.framework/UIKit 
  • Using the xcrun atos tool to mark this line:
 6 UIKit 0x000000018a6622c8 <redacted> + 612 xcrun atos -arch arm64 -o /Users/my_user/Library/Developer/Xcode/iOS\ DeviceSupport/8.4.1\ \(12H321\)/symbols/system/Library/Frameworks/UIKit.framework/UIKit -l 0x18a662064 0x000000018a6622c8 

I cannot find the correct output from this command. What am I missing? My question is: how to symbolize a system framework like UIKit ?

+8
source share

Source: https://habr.com/ru/post/1012751/


All Articles