デバッグ シンボライズ
Xode内にあるsymbolicatecrashを使う。以下を参照した。
www.crunchtimer.jp
まず探す。Xcode8のフォルダ内で
find . -name symbolicatecrash /Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
面倒なので適当にln -sでシンボリックリンクを作っておく。
次に対応するアプリのdSYMファイルがいる。
Library/Developer/Xcode/DerivedData/hogehoge/Build/Products/Debug-iphoneos
実行してみる
./symbolicatecrash hoge.crash hoge.app.dSYM/ Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
シンボリックリンクをはる。
$ export DEVELOPER_DIR=”/Applications/Xcode.app/Contents/Developer/”
再度実行した。
xcrun: error: missing DEVELOPER_DIR path: ”/Applications/Xcode.app/Contents/Developer/” ## Warning: can't find tool named 'otool' in iOS SDK, falling back to searching the Mac OS X SDK xcrun: error: missing DEVELOPER_DIR path: ”/Applications/Xcode.app/Contents/Developer/” Error: can't find tool named 'otool' in the macosx SDK or any fallback SDKs at ./symbolicatecrash line 122.
以下のサイトのやり方に従う
stackoverflow.com
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer
xcode-selectのヘルプをみてみた。
/usr/bin/xcode-select -h Usage: xcode-select [options] Print or change the path to the active developer directory. This directory controls which tools are used for the Xcode command line tools (for example, xcodebuild) as well as the BSD development commands (such as cc and make). Options: -h, --help print this help message and exit -p, --print-path print the path of the active developer directory -s <path>, --switch <path> set the path for the active developer directory --install open a dialog for installation of the command line developer tools -v, --version print the xcode-select version -r, --reset reset to the default command line tools path
xcode-selectのswitchをやりつつDEVELOPER_DIRのシンボリックリンクをはった結果
symbolicatecrashに成功した。
個々の解析
しかし、なぜかdSYMがうまく読み込めなかったため、方針を変更し以下のサイトに従ってatosをためした。
developer.apple.com
クラッシュレポートの以下をシンボル化したいとする。
0 Hoge 0x00000001000ea5d8 0x100020000 + 828888
atos -arch arm64 -o HogeApp.app.dSYM/Contents/Resources/DWARF/Hoge -l 0x100020000 0x00000001000ea5d8
Hogeはbinary image name
0x100020000はload address
0x00000001000ea5d8はシンボル化したいアドレス
これでシンボル化ができた。
参照したサイト
www.crunchtimer.jp
irabbit.seesaa.net
stackoverflow.com