ETSymbolication from Emerge Tools enables symbolicating iOS crash reports with symbols from Apple's private frameworks like SwiftUI.
βοΈ You can use the free symbolicator to symbolicate crash reports with symbols in this repo
π To learn more about this repo, you can read our posts on discovering hidden symbols and building an open-source symbolicator
You will find available symbols inside the Symbols
folder. Each folder inside represents a different device. For example, iPhone 12,8
represents symbols for the iPhone SE 2nd gen. Files in Symbols
correspond to a specific OS version. There can be symbols for multiple frameworks in a single file.
A full list of supported symbols can be found below. All pairings with a β are supported in the Emerge Tools' symbolicator.
Symbols marked with β are in this repo, but not supported in the Emerge Tools symbolicator.
OS Version | SwiftUI |
---|---|
iOS 16.5 (20F66) | |
iOS 16.5.1 (20F75) | |
iOS 17.0 Beta 6 (21A5312c) | |
iOS 17.1.1 (21B91) |
OS Version | SwiftUI |
---|---|
iOS 17.2 (21C62) |
This repo provides the tools to generate symbols for any framework. Symbols are generated for Device x OS x Framework pairings in the Symbols
folder.
β οΈ Refer to supported symbols to ensure the symbols you're looking for aren't already generated.
To use ETSymbolication, ensure that you have the following prerequisites:
If the required Device x OS x Framework pairing has not been extracted yet:
ETSymbolication.xcodeproj
).Libraries.swift
.There are no more symbols to extract
.brew install blacktop/tap/ipsw
ipsw extract --dyld PATH_TO_IPSW
python3 -m pip install git+https://github.com/arandomdev/DyldExtractor#egg=dyldextractor
dyldex -e /System/Library/Frameworks/YOUR_FRAMEWORK.framework/YOUR_FRAMEWORK ./PATH_TO_EXTRACTED_IPSW/dyld_shared_cache_arm64e
binaries/System/Library/Frameworks/YOUR_FRAMEWORK.framework/
.otool -l binaries/System/Library/Frameworks/YOUR_FRAMEWORK.framework/YOUR_FRAMEWORK | grep LC_SEGMENT -A8
segname __TEXT
and the vmaddr
value will be the linker address.Example for MetalPerformanceShadersGraph:
otool -l binaries/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/MetalPerformanceShadersGraph | grep LC_SEGMENT -A8
Output:
cmd LC_SEGMENT_64
cmdsize 1112
segname __TEXT
vmaddr 0x00000001800fc000
vmsize 0x0000000000c5c000
fileoff 0
filesize 12959744
maxprot 0x00000005
initprot 0x00000005
The linker adddress is 0x00000001800fc000
*.crash
files inside a new folder.SymbolsBuilder
binary with the following parameters:
The SymbolsBuilder
command will output a .csv file with all required symbol data. If you are generating symbols for a Device and OS pairing already in the Symbols
folder, append your symbols to the existing OS file. If the OS does not yet exist, please create a new file with the appropriate OS name.