EXC_BREAKPOINT с очень большим значением номера строки в crashlytics swift / ios - PullRequest
0 голосов
/ 02 мая 2020

Я получаю тревожное количество аварий EXC_BREAKPOINT в аварийных приложениях для моего iOS стремительного приложения.

Я попытался исправить ошибку, посмотрев на метод 'populate (user: withLegacyUsage :)' и убедившись, что мои опционально правильно развернуты. В этом методе я также удалял элементы в массиве, пока я зацикливался на этом массиве. Я думал, что это могло вызвать ошибку, но ошибка все еще происходит после загрузки моей исправленной сборки.

Я думаю, у меня есть два вопроса:

  1. Почему некоторые из номера строк сбоя настолько велики? "+ 4304075872" не может быть строкой в ​​моем приложении. У меня не так много кода. Значит ли это, что происходит какое-то l oop? Может ли это быть проблемой? Или это нормально?

  2. Как бороться с EXC_BREAKPOINTS сбоев в целом? Как, глядя на трассировку стека, я могу лучше понять, где происходит cra sh? Он проживает на более низком уровне? Связано ли это с утечками памяти? Сохранить циклы? Я заблудился.

Спасибо за любые советы или помощь!

Crashed: com.apple.main-thread
0  myAppName                      0x1008d3c60 closure #3 in UserManager.populate(user:withLegacyUsage:) + 4304075872 (<compiler-generated>:4304075872)
1  myAppName                      0x1008d6c74 specialized UserManager.populate(user:withLegacyUsage:) + 4304088180 (<compiler-generated>:4304088180)
2  myAppName                      0x1008d3664 closure #1 in UserManager.loadLegacyUsers(withCompletionHandler:) + 129 (UserManager.swift:129)
3  myAppName                      0x1008f0f34 closure #1 in LoginViewController.viewDidLoad() + 4304195380 (<compiler-generated>:4304195380)
4  myAppName                      0x1008f39cc partial apply for closure #1 in LoginViewController.playIntroAnimation(withCompletionHandler:) + 4304206284 (<compiler-generated>:4304206284)
5  myAppName                      0x1008c9e90 partial apply for closure #1 in AnimationManager.playAnimation(inView:withCompletionHandler:) + 4304035472 (<compiler-generated>:4304035472)
6  Lottie                         0x101315b78 $s6Lottie27AnimationCompletionDelegateC16animationDidStop_8finishedySo11CAAnimationC_SbtF + 416
7  Lottie                         0x101315bec $s6Lottie27AnimationCompletionDelegateC16animationDidStop_8finishedySo11CAAnimationC_SbtFTo + 64
8  QuartzCore                     0x18d6efdac CA::Layer::run_animation_callbacks(void*) + 276
9  libdispatch.dylib              0x186927184 _dispatch_client_callout + 16
10 libdispatch.dylib              0x1868d9190 _dispatch_main_queue_callback_4CF$VARIANT$mp + 1044
11 CoreFoundation                 0x186bd85e4 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
12 CoreFoundation                 0x186bd35d8 __CFRunLoopRun + 2004
13 CoreFoundation                 0x186bd2adc CFRunLoopRunSpecific + 464
14 GraphicsServices               0x190b73328 GSEventRunModal + 104
15 UIKitCore                      0x18ace063c UIApplicationMain + 1936
16 myAppName                      0x100875110 main + 12 (AppDelegate.swift:12)
17 libdyld.dylib                  0x186a5c360 start + 4

1 Ответ

1 голос
/ 07 мая 2020

Вероятно, это не номера строк, а адреса памяти. Спускаясь вниз по списку «function + x» в этой трассировке стека, все они также кратны 4, что указывает на адреса памяти. Это происходит потому, что Apple автоматически генерирует код для Swift. Обычно, когда вы видите «+ что-то», это обычно означает, что cra sh был обозначен на устройстве символом, который может взять эти сгенерированные строки кода.

Эта ссылка на техническую документацию Apple может иметь больше информации, с примерами стековых трасс в разделе «Определение символа отчета Cra sh».

...