Символическая трассировка стеков iOS без журнала сбоев

Я использую 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

Есть ли другой способ обозначить этот адрес или получить соответствующий адрес загрузки?

1 ответ

Решение

load address является 0xb3000,

К счастью, у вас есть символы, вырезанные из двоичного файла вашего приложения, иначе это не будет видно.

Также этот сбой произошел из-за исключения, поэтому отчет о сбое должен дать вам Last Exception Backtrace показывая, где произошло фактическое исключение и фактическая причина исключения. Вполне вероятно, что вызов в строке 5 отправленной трассировки стека не даст вам много информации об этом. Информация о сбое, которую вы получаете, выглядит довольно ограниченной:(

Другие вопросы по тегам