web-dev-qa-db-ja.com

クラッシュログを表示するためにiOSクラッシュを手動でシンボル表示する方法

アプリをデバッグしようとしています。問題は、このプログラムが見つからないことです。

symbolicatecrash.sh

Sudo cp /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/symbolicatecrash /usr/local/bin/

個別ダウンロードですか? XCode 3.2.3を使用しています

ありがとう。

26
butchcowboy

編集:: XCode 4.3

いくつかの例外を除いて、元の回答(下記)で概説されているのと同じ手順を実行する必要があります。

最初に、Xcodeパスを修正する必要があります。ターミナルを開いて実行します:

/ usr/bin/xcode-select -print-path

「/ Developer」または「/Applications/Xcode.app/Contents/Developer/」以外が表示されている場合は、誤りです。これを修正するには、次のコマンドを実行します。

Sudo/usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/

これで、symbolicatecrashコマンドが(再び)新しい場所にあることを除いて、以下のすべてのステップを実行できます。これは、Xcodeがアプリとしてインストールされるようになったためです。 symbolicatecrashを見つけるには、ターミナルからこれを実行します

/Applications/Xcode.app -name symbolicatecrash -type fを見つけます

これは返されるはずです:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

symbolicatecrashを実行する前に、次のようにこのディレクトリに移動することができます。

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/


元の回答:: Xcode <4.3

シンボリッククラッシュのパス

端末からの検索:

/ Developer -name symbolicatecrash -type fを検索します

私にとってこれは戻りました:

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

クラッシュログを手動で記号化する方法

最初の引数としてクラッシュログを、2番目の引数としてdSYMファイルを使用してsymbolicatecrashコマンドを実行します。現在のディレクトリからsymbolicatecrashを実行する場合は、必ず./のように前に./symbolicatecrash PATH環境変数にコマンドが存在するディレクトリが含まれていない限り。

最初にsymbolicatecrashコマンドが含まれるディレクトリに変更しました(注:Xcode 4.3では異なります。トップを参照):

cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/

次に、次のコマンドを実行しました。

./symbolicatecrash /somePath/MyCrashLogFile.crash /somePath/MyAppName.app.dSYM

DSYMファイルを見つける方法:

DSYMファイルを取得するには、クラッシュでビルドを作成するために使用されたアーカイブが必要です。

手順は次のとおりです。

  1. 右クリック(または ctrl オーガナイザーからアーカイブをクリックし、[Finderに表示]を選択します。
  2. Finderのxcarchiveファイルから、右クリック(または ctrl このファイルをクリックし、[パッケージの内容を表示]を選択します。次に、「dSYMs」フォルダが表示されます。
  3. 「dSYMs」フォルダー内には、ファイルを記号化するために必要な「YourAppName.app.dSYM」ファイルがあります。
89
Sam

Xcode用のプラグインは、[製品]メニューから利用できます。このプラグインは Alcatrazパッケージマネージャー から入手できます。または githubから から直接ダウンロードできます。

このプラグインは、手動のクラッシュシンボリケーションのために以下のコマンドを実行するための設定を行うシェルスクリプトを内部に組み込んでいます。

  1. エイリアスをsymbolicatecrash.pl Perlスクリプトに設定します

エイリアスsymbolicatecrash = '/ Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash'

  1. Symbolicatecrashを見つけるには、上記のエイリアスと異なる必要があります。

/Applications/Xcode.app -name symbolicatecrash -type fを見つけます

  1. DEVELOPER_DIR変数を設定します。

エクスポートDEVELOPER_DIR = '/ Applications/Xcode.app/Contents/Developer'

  1. DSYMを使用すると、クラッシュは次のように表すことができます。

symbolicatecrash /path/to/MyApp_2012-10-01_Device.crash /path/to/MyApp.app.dSYM。

5
MaheshShanbhag

クラッシュログを表す1つの方法は、ターミナルで次のコマンドを実行することです。

xcrun atos -o MyApp.app/MyApp -Arch armv7 -l 0xb7000 -f MyApp.crash

上記のコマンドの例の16進数(0xb700)をベースロードアドレスに置き換えます。ベースロードアドレスは、直後の行の最初のメモリアドレスです。

「バイナリイメージ:」

.appファイルを取得するには:

Xcarchiveファイルを右クリックして[パッケージの内容を表示]を選択します。appファイルはProducts/Applicationsディレクトリにあります。

4
Kumar Summan

Appleで説明されているように、 Xcodeは自動的に記号化を試みます。symbolicatecrashとSpotlightを使用してそれを行います。ただし、アプリがローカルでビルドされていない場合またはそれが削除された場合、必要な.appおよび.dsymファイルは使用できません。

ですから、dsymファイルとリリースされたバージョンのアプリに注意してください。ビルドツールは、多くの場合、.dsymファイルを.dsym.Zipに圧縮し、.appを.ipaとしてパッケージ化します。両方を解凍して、.appと.dsymを同じフォルダーにコピーできます。その後、Xcodeはスポットライトを使用してそれらを見つけることができます。

2
orkoden

5分前にクラッシュログのデバッグに関する投稿を書いたところです。 http://just2us.com/2010/10/reading-iphone-crashlog/

ログをXcodeにドラッグアンドドロップするだけで十分な場合は、symbolicatecrash.shは不要になる可能性があります。 3.2.4を使用していますが、スクリプトも見つかりません。

2
samwize

ここに私が使用する簡単な方法があります:

  1. Xcode 6を開く
  2. 開発デバイスを接続します
  3. Xcode内で、[ウィンドウ]> [デバイス]> [デバイスを選択]に移動します
  4. 「デバイスログの表示」を押します
  5. レポートをウィンドウにドラッグして表示します
1