Xcode 5のオーガナイザーには、すべてのクラッシュログを一覧表示するビューがありました。ここにドロップクラッシュログをドラッグできます。しかし、Xcode 6以降、デバイスが整理されていないため、新しいウィンドウが表示されるようになりました。しかし、Xcode 6にアップグレードした後、Xcode 5にドラッグアンドドロップしたクラッシュログを表示する場所が見つかりません。誰かが答えを知っていますか?
Xcode 5のオーガナイザーには、すべてのクラッシュログを一覧表示するビューがありました。ここにドロップクラッシュログをドラッグできます。しかし、Xcode 6以降、デバイスが整理されていないため、新しいウィンドウが表示されるようになりました。しかし、Xcode 6にアップグレードした後、Xcode 5にドラッグアンドドロップしたクラッシュログを表示する場所が見つかりません。誰かが答えを知っていますか?
回答:
わかりました、これを行うことができます:
Xcode > Window > Devices
、接続されているiPhone / iPad / etcを左上で選択します。おそらくそこには多くのログがあり、インポートされたログを後で見つけやすくするために、この時点ですべてのログを削除することができます。または、クラッシュが発生した正確な時点を知らない限り-とにかくファイルに書き込む必要があります...私は怠惰なので、すべての古いログを削除します(これには実際には時間がかかりました)。
.crash
ます。
私自身と同じくらいコミュニティのためにこの答えを書いてください。
クラッシュレポートを表す問題が発生した場合は、次のようにして問題を解決できます。
コピーし、別のフォルダを作成Foo.app
し、Foo.app.dSYM
対応するから.xcarchive
フォルダに。また、.crash
レポートをフォルダーにコピーします。
TextEditまたは他の場所でクラッシュレポートを開き、Binary Images:
セクションに移動して、そこに最初のアドレスをコピーします(例:)0xd7000
。
cd
フォルダに。これで、次のコマンドを実行できます。
xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb
これは、アドレスのシンボルを示します0x0033f9bb
。-arch
オプションの正しい値を選択してください(Binary Images:
セクションの最初の行から削除するかHardware Model:
、クラッシュレポートとアプリでサポートされているアーチから把握できます)。
クラッシュレポートから必要なアドレス(スレッドコールスタックなど)を直接テキストファイルにコピーして(TextEditでは、Optionキーを押しながら必要なテキストブロックを選択するか、コピーして切り取る)、次のようなものを取得することもできます。
0x000f12fb
0x002726b7
0x0026d415
0x001f933b
0x001f86d3
これをテキストファイル(例:)に保存しaddr.txt
、次のコマンドを実行します。
xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt
これは、一度にすべてのアドレスに素晴らしいシンボリックを与えます。
PS
上記を行う前に、すべてが正しく設定されていることを確認することをお勧めします(atos
基本的に提供されたアドレスについて何かを喜んで報告します)。
チェックを行うには、クラッシュレポートを開き、の呼び出しスタックの最後に移動しますThread 0
。アプリのリストの最初から1行目(通常は2行目)、例:
34 Foo 0x0033f9bb 0xd7000 + 2525627
main()
呼び出しでなければなりません。0x0033f9bb
上で説明したように(この場合)アドレスを記号化すると、これが実際にmain()
ランダムな方法や関数ではなく、実際にあることを確認できます。
アドレスがのアドレスでない場合はmain()
、ロードアドレス(-l
オプション)とアーチ(-arch
オプション)を確認してください。
PPS
上記のために仕事をしない場合はビットコード、dSYM(ファインダー>パッケージの内容を表示)から実行可能なバイナリを抽出し、iTunesの接続からのビルドのためのdSYMをダウンロードしたディレクトリにコピーし、それ(すなわちを使用しFoo
て)のatos
代わりにへの引数Foo.app/Foo
。
xcrun dwarfdump --uuid <path to executable>
./symbolicate.sh mycrash.crash MyApp.app arch64 output.crash
完全なクラッシュレポートを象徴し、それを象徴したバージョンを提供します。 gist.github.com/nathan-fiscaletti/…–
これも参照できます。手動クラッシュの再記号化の手順を順を追って説明しました。
ステップ1
上記のすべてのファイル(MyApp.app、MyApp-dSYM.dSYMおよびMyApp-Crash-log.crash)を、Terminalを使用して簡単に移動できる場所に、便利な名前のフォルダーに移動します。
私にとって、デスクトップは最も簡単にアクセスできる場所です;)そこで、これらの3つのファイルをデスクトップのMyAppフォルダーに移動しました。
ステップ2
今度はFinderの番です。XCODEバージョンに該当する次のいずれかのパスに移動します。
このコマンドを使用して、symbolicatecrash
スクリプトファイルを見つけます。
find /Applications/Xcode.app -name symbolicatecrash
Xcode 8、Xcode 9、Xcode 11 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode 7.3
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
XCode 7 /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
Xcode 6 /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Xcode 6より低い
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
または
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
ステップ3
見つかったsymbolicatecrashスクリプトファイルのディレクトリを次の$PATH
ようにenv変数に追加し、スクリプトファイルのディレクトリをsudo vim /etc/paths.d/Xcode-symbolicatecrash
貼り付けてファイルを保存します。新しいターミナルを開くと、にsymbolicatecrash
あるコマンドとして任意のフォルダーを呼び出すことができます/usr/bin
。
または
この場所からsymbolicatecrashファイルをコピーして、デスクトップ/ MyAppに貼り付けます(待ってください…私を盲目的にフォローしないでください。MyAppフォルダにsybolicatecrashファイルを貼り付けています。これは、ステップ1で作成したお気に入りの場所に3つのファイルがあります。 )
ステップ4
ターミナルを開き、MyAppフォルダに移動します。
cd Desktop/MyApp — Press Enter
export DEVELOPER_DIR=$(xcode-select --print-path)
— Enterキーを押します
./symbolicatecrash -v MyApp-Crash-log.crash MyApp.dSYM
— Enterキーを押します
それでおしまい !!シンボリックログが端末にあります...何を待っていますか?簡単に言うと、エラーを見つけて解決します;)
ハッピーコーディング!!!
xcode-select --print-path
私にとっては.crashファイルで十分でした。.dSYMファイルと.appファイルなし。
私はMacで次の2つのコマンドを実行し、アーカイブを作成しました。
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /yourPath/crash1.crash > /yourPath/crash1_symbolicated.crash
Xcodeを使用する簡単な方法があります(コマンドラインツールを使用せず、一度に1つずつアドレスを検索しません)。
.xcarchiveファイルを取得します。以前から持っていればそれを使うことができます。ない場合は、[製品]> [Xcodeからアーカイブ]を実行して作成します。
.xcarchiveファイルを右クリックして、[パッケージの内容を表示]を選択します。
(クラッシュしたアプリのバージョンの)dsymファイルをdSYMsフォルダーにコピーします
(クラッシュしたアプリのバージョンの).appファイルをProducts> Applicationsフォルダにコピーします
Info.plistを編集し、ApplicationPropertiesディクショナリの下のCFBundleShortVersionStringおよびCFBundleVersionを編集します。これは後でアーカイブを識別するのに役立ちます
.xcarchiveをダブルクリックしてXcodeにインポートします。オーガナイザーが開きます。
クラッシュログに戻ります(Xcodeの[デバイス]ウィンドウ内)
.crashファイルをそこにドラッグします(まだ存在しない場合)。
クラッシュログ全体がシンボリックされているはずです。そうでない場合は、右クリックして[クラッシュログの再記号化]を選択します。
Xcode 10で次の手順に従って、同じマシンでビルドされたアプリからのクラッシュログを象徴します。
.dSYMファイルと.crashファイルが同じサブフォルダーにある場合、次の手順を実行できます。
$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc
-[AtomicElementViewController myTransitionDidStop:finished:context:]
信頼できるソース:https : //developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS
Xcodeアプリケーション名にスペースが含まれていないことを確認してください。これがうまくいかなかった理由です。そう/Applications/Xcode.app
しながら、作品/Applications/Xcode 6.1.1.app
の仕事をしません。
Appleのドキュメントから:
Xcodeによるクラッシュレポートの記号化Xcodeは、発生したすべてのクラッシュレポートを自動的に記号化しようとします。シンボリケーションに必要なのは、クラッシュレポートをXcode Organizerに追加することだけです。
Xcodeは自動的にクラッシュレポートを象徴し、結果を表示しますクラッシュレポートを象徴するために、Xcodeは以下を見つけることができる必要があります:
クラッシュするアプリケーションのバイナリとdSYMファイル。
アプリケーションがリンクするすべてのカスタムフレームワークのバイナリとdSYMファイル。アプリケーションのソースから構築されたフレームワークの場合、それらのdSYMファイルは、アプリケーションのdSYMファイルと一緒にアーカイブにコピーされます。サードパーティによって構築されたフレームワークの場合、作成者にdSYMファイルを要求する必要があります。
アプリケーションがクラッシュしたときにそのアプリケーションが実行されていたOSの記号。これらのシンボルには、特定のOSリリース(iOS 9.3.3など)に含まれるフレームワークのデバッグ情報が含まれています。OSシンボルはアーキテクチャ固有です。64ビットデバイス向けiOSのリリースには、armv7シンボルは含まれません。Xcodeは、Macに接続する各デバイスからOSシンボルを自動的にコピーします。
これらのいずれかが欠落している場合、Xcodeはクラッシュレポートをシンボル化できないか、クラッシュレポートを部分的にシンボル化する可能性があります。
クラッシュログを象徴する最も簡単なプロセス:
5秒待ちます。バン!スタックトレースのアプリケーション呼び出しがシンボリック表示されます!ただし、まだ多くのシンボルが表示される場合があります。これらは内部ライブラリとフレームワークの呼び出しです。
これは、試してテストした最も簡単な方法です。