3

私はBugSenseを使用してiOSアプリからのクラッシュを追跡しています。最近、実際の使用からのスタックトレースを象徴する問題に気づきました。

問題は、AppleがiOS 4.3でアドレス空間のランダム化を導入したため、対象のスタックアドレスを使用して、クラッシュの原因となった正しいメソッドを取得することだけができないことです。

現在、計算して正しい住所を取得しようとしています

symbol address = slide + stack address - load address

私はすでにスライドとスタックのアドレスを持っていますが、私の理解から、ロードアドレスはBugSenseを介して取得できないクラッシュレポートでのみ見つけることができます。スタックトレースは次のようになります

0 CoreFoundation 0x342723e7 + 162
1 libobjc.A.dylib 0x3bf63963 objc_exception_throw + 30
2 CoreFoundation 0x3427229d + 0
3 Foundation 0x34b48fa3 + 90
4 UIKit 0x360b5bd9 + 7640
5 MyApp 0x000c6e99 0xb3000 + 81561
6 UIKit 0x3623c2ff 0x3607e000 + 1827583
7 UIKit 0x361b8737 0x3607e000 + 1287991
8 UIKit 0x361a9869 0x3607e000 + 1226857
9 UIKit 0x361a97ad 0x3607e000 + 1226669
10 CoreFoundation 0x34247941 0x341b0000 + 620865
11 CoreFoundation 0x34245c39 0x341b0000 + 613433
12 CoreFoundation 0x34245f1d 0x341b0000 + 614173
13 CoreFoundation 0x341b923d CFRunLoopRunSpecific + 356
14 CoreFoundation 0x341b90c9 CFRunLoopRunInMode + 104
15 GraphicsServices 0x37d9733b GSEventRunModal + 74
16 UIKit 0x360d52b9 UIApplicationMain + 1120
17 MyApp 0x000b61bf 0xb3000 + 12735
18 MyApp 0x000b4a08 0xb3000 + 6664

このアドレスを象徴する、またはそれぞれのロードアドレスを取得する別の方法はありますか?

4

1 に答える 1

1

load addressです0xb3000。_

幸いなことに、アプリのバイナリからシンボルが削除されています。そうしないと、これは表示されません。

また、このクラッシュは例外がスローされたために発生したため、クラッシュレポートLast Exception Backtraceには、実際の例外が発生した場所と実際の例外の理由が表示されます。投稿されたスタックトレースの5行目の呼び出しでは、それに関する多くの情報が得られない可能性があります。あなたが得ているクラッシュ情報はかなり限られているように見えます:(

于 2013-03-07T12:50:58.220 に答える