最近、アプリケーションの iOS 7 アップデートをプッシュし、クラッシュ レポートを有効にして Flurry Analytics を実装しました。最近、一部のユーザーでクラッシュが発生していることに気付きました。Flurry を使用すると、アプリがクラッシュした瞬間のスタック トレースを取得して問題を追跡できます。
確かに、私はクラッシュ レポートに精通しており、iTunes Connect またはメールから取得し、Xcode でシンボリック化することで、以前にそれらを使用してバグを修正しました。しかし、私は Flurry を使用してそれを行うことに成功しません。
私が試したこと:
Flurry 自体のスタック トレースを表示すると、次のようになり
ます
<redacted>
。いくつかの調査で、Apple が iOS 6 および 7 で多くのデバッグ シンボルを削除した
ことがわかりました。私が最初に試みたのは、独自の dSYM ファイルをアップロードすることでした。Flurry は、dSYM ファイルが保存され、dSYM ファイルを使用してクラッシュ レポートが再度シンボリック化されたと報告しました。ただし、スタック トレースは、dSYM がない場合とまったく同じでした。
問題ありません。クラッシュ レポートをダウンロードして、Xcode を使用してシンボル化するだけでよいと思いました。ダウンロードをクリックすると、次の内容のファイル (拡張子がないため、名前を に変更.crash
) が得られます。
Hardware Model: iPhone3,1
Process: RadioPlayer [2965]
Path: /var/mobile/Applications/E4DD7DA6-4450-4538-A1E2-AE23139FAC10/RadioPlayer.app/RadioPlayer
Identifier: *******
Version: 1.2.0
Code Type: ARM
Parent Process: launchd [1]
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x548a000
Crashed Thread: 2
Thread 0:
0 libsystem_kernel.dylib 0x3aa67a8c _mach_msg_trap + 20
1 CoreFoundation 0x3015e7cb <redacted> + 154
2 CoreFoundation 0x3015cf37 <redacted> + 854
3 CoreFoundation 0x300c7ce7 _CFRunLoopRunSpecific + 522
4 CoreFoundation 0x300c7acb _CFRunLoopRunInMode + 106
5 GraphicsServices 0x34da0283 _GSEventRunModal + 138
6 UIKit 0x32969a41 _UIApplicationMain + 1136
7 RadioPlayer 0x000dfb9b __mh_execute_header + 23451
8 libdyld.dylib 0x3a9c3ab7 <redacted> + 2
Thread 1:
0 libsystem_kernel.dylib 0x3aa6783c _kevent64 + 24
1 libdispatch.dylib 0x3a9a23f3 <redacted> + 38
Thread 2 Crashed:
0 vImage 0x2f19d7dc <redacted> + 139
1 vImage 0x2f1874ff _vImageFlatten_RGBA8888 + 378
2 vImage 0x2f26e799 <redacted> + 40
3 vImage 0x2f27d7c3 <redacted> + 674
4 vImage 0x2f27d365 _vImageConvert_AnyToAny + 1300
5 ImageIO 0x30efd9e7 <redacted> + 858
6 ImageIO 0x30ef8c3b <redacted> + 2754
7 ImageIO 0x30ef8173 <redacted> + 102
8 ImageIO 0x30ef8057 _CGImageDestinationFinalize + 66
9 UIKit 0x32a8a611 _UIImageJPEGRepresentation + 520
10 MediaPlayer 0x31435319 -[MPMediaItemArtwork imageDataWithSize:atPlaybackTime:] + 36
11 MediaPlayer 0x31435387 -[MPMediaItemArtwork albumImageDataWithSize:] + 42
12 MediaPlayer 0x31494f0d -[MPNowPlayingInfoCenter _pushNowPlayingInfoAndRetry:] + 824
13 libdispatch.dylib 0x3a99ed7b <redacted> + 10
14 libdispatch.dylib 0x3a99f2f3 <redacted> + 378
15 libdispatch.dylib 0x3a99f75b <redacted> + 38
16 libdispatch.dylib 0x3a9b18f9 <redacted> + 76
17 libdispatch.dylib 0x3a9b1b79 <redacted> + 56
18 libsystem_pthread.dylib 0x3aae0dbf __pthread_wqthread + 298
19 libsystem_pthread.dylib 0x3aae0c84 _start_wqthread + 8
// The file continues like this listing the other threads and overview of binary images.
// I however didn't paste that part here since I don't think it's useful.
このファイルをXcodeオーガナイザーにドラッグするだけでなく、デバイスログをインポートすることも試しました。どちらも単に何もしませんでした。リストなどに新しいデバイス ログは表示されませんでした。
次のステップ: を使用して手動でクラッシュ ログをシンボリック化しようとしていますatos
。dSYMの内容を作業ディレクトリなどにコピーしてから、このコマンドを試しました
xcrun atos -arch armv7 -o RadioPlayer 0x31435387`
これが返ってき0x31435387
ました。他のメモリアドレスをいくつか試しましたが、出力は毎回メモリアドレス自体だけでした。
誰でもこの問題で私を助けてもらえますか? <redacted>
これらのシンボルを記号化することは、これらのクラッシュの原因となるバグを修正するのに確実に役立つため、非常に気に入っています。ありがとう!