Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

デバッグ シンボライズ

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