Swift / iOS崩溃日志不包含行号

马克·里昂斯

我正在通过TestFlight将内部版本部署到测试人员,该应用程序崩溃了。我无法重现崩溃,因此我试图依赖Xcode Organizer中列出的崩溃日志。

不幸的是,这里的崩溃包含一些信息,但是没有任何信息可以让我识别出导致崩溃的代码行。通常,当我在管理器窗口中单击崩溃时,它会自动向我显示导致崩溃的Xcode行。

这是原始的崩溃日志,其中也不包含行号,仅包含发生崩溃的文件和方法。

Thread 0 name:
Thread 0 Crashed:
0   libswiftCore.dylib              0x0000000103154b8c 0x102f64000 + 2034572
1   libswiftCore.dylib              0x0000000103154b8c 0x102f64000 + 2034572
2   libswiftCore.dylib              0x000000010316017c 0x102f64000 + 2081148
3   libswiftCore.dylib              0x0000000103105cfc 0x102f64000 + 1711356
4   libswiftCore.dylib              0x0000000103160984 0x102f64000 + 2083204
5   libswiftCore.dylib              0x00000001030ad2f8 0x102f64000 + 1348344
6   AppName                         0x0000000102c92748 specialized TableViewController.sendSmsMessage(sender:) + 8816 (TableViewController.swift:0)

(TableViewController.swift:0)
7   AppName                         0x0000000102c8c448 @objc TableViewController.CorF(sender:) + 44
8   UIKitCore                       0x00000001ea7a6314 -[UIApplication sendAction:to:from:forEvent:] + 96 (UIApplication.m:4786)
9   UIKitCore                       0x00000001ea233d54 -[UIControl sendAction:to:forEvent:] + 80 (UIControl.m:624)
10  UIKitCore                       0x00000001ea234074 -[UIControl _sendActionsForEvents:withEvent:] + 440 (UIControl.m:707)
11  UIKitCore                       0x00000001ea233074 -[UIControl touchesEnded:withEvent:] + 568 (UIControl.m:461)
12  UIKitCore                       0x00000001ea7dfa6c -[UIWindow _sendTouchesForEvent:] + 2472 (UIWindow.m:2204)
13  UIKitCore                       0x00000001ea7e0cd0 -[UIWindow sendEvent:] + 3156 (UIWindow.m:2453)
14  UIKitCore                       0x00000001ea7bffcc -[UIApplication sendEvent:] + 340 (UIApplication.m:10819)
15  UIKitCore                       0x00000001ea88ee38 __dispatchPreprocessedEventFromEventQueue + 1620 (UIEventDispatcher.m:1678)
16  UIKitCore                       0x00000001ea891830 __handleEventQueueInternal + 4740 (UIEventDispatcher.m:1937)
17  UIKitCore                       0x00000001ea88a320 __handleHIDEventFetcherDrain + 152 (UIEventDispatcher.m:1905)
18  CoreFoundation                  0x00000001bd44a0e0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 (CFRunLoop.c:1980)
19  CoreFoundation                  0x00000001bd44a060 __CFRunLoopDoSource0 + 88 (CFRunLoop.c:2015)
20  CoreFoundation                  0x00000001bd449944 __CFRunLoopDoSources0 + 176 (CFRunLoop.c:2051)
21  CoreFoundation                  0x00000001bd444810 __CFRunLoopRun + 1040 (CFRunLoop.c:2922)
22  CoreFoundation                  0x00000001bd4440e0 CFRunLoopRunSpecific + 436 (CFRunLoop.c:3247)
23  GraphicsServices                0x00000001bf6bd584 GSEventRunModal + 100 (GSEvent.c:2245)
24  UIKitCore                       0x00000001ea7a4c00 UIApplicationMain + 212 (UIApplication.m:4347)
25  AppName                         0x0000000102c7d0f0 main + 60 (SMS.swift:12)
26  libdyld.dylib                   0x00000001bcf02bb4 start + 4

关于如何确定导致崩溃的生产线的任何想法?

编辑:我能够使用户向我发送@Václav建议在其设备上存储的崩溃报告,但它似乎也不包含很多有用的信息:

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libswiftCore.dylib              0x0000000104e774ec 0x104c8c000 + 2012396
1   libswiftCore.dylib              0x0000000104e774ec 0x104c8c000 + 2012396
2   libswiftCore.dylib              0x0000000104e828cc 0x104c8c000 + 2058444
3   libswiftCore.dylib              0x0000000104e28fd4 0x104c8c000 + 1691604
4   libswiftCore.dylib              0x0000000104e830cc 0x104c8c000 + 2060492
5   libswiftCore.dylib              0x0000000104dd142c 0x104c8c000 + 1332268
6   AppName                         0x00000001047fa948 0x1047e0000 + 108872
7   AppName                         0x00000001047f4784 0x1047e0000 + 83844
8   UIKitCore                       0x00000001e6fe6314 0x1e66fc000 + 9347860
9   UIKitCore                       0x00000001e6a73d54 0x1e66fc000 + 3636564
10  UIKitCore                       0x00000001e6a74074 0x1e66fc000 + 3637364
11  UIKitCore                       0x00000001e6a73074 0x1e66fc000 + 3633268
12  UIKitCore                       0x00000001e6bfaaf0 0x1e66fc000 + 5237488
13  UIKitCore                       0x00000001e6bf57ec 0x1e66fc000 + 5216236
14  UIKitCore                       0x00000001e6bf52cc 0x1e66fc000 + 5214924
15  UIKitCore                       0x00000001e6bf509c 0x1e66fc000 + 5214364
16  UIKitCore                       0x00000001e7020cb4 0x1e66fc000 + 9587892
17  UIKitCore                       0x00000001e6ffffcc 0x1e66fc000 + 9453516
18  UIKitCore                       0x00000001e70cee38 0x1e66fc000 + 10300984
19  UIKitCore                       0x00000001e70d1830 0x1e66fc000 + 10311728
20  UIKitCore                       0x00000001e70ca320 0x1e66fc000 + 10281760
21  CoreFoundation                  0x00000001b9c8a0e0 0x1b9bdd000 + 708832
22  CoreFoundation                  0x00000001b9c8a060 0x1b9bdd000 + 708704
23  CoreFoundation                  0x00000001b9c89944 0x1b9bdd000 + 706884
24  CoreFoundation                  0x00000001b9c84810 0x1b9bdd000 + 686096
25  CoreFoundation                  0x00000001b9c840e0 0x1b9bdd000 + 684256
26  GraphicsServices                0x00000001bbefd584 0x1bbef2000 + 46468
27  UIKitCore                       0x00000001e6fe4c00 0x1e66fc000 + 9341952
28  AppName                         0x00000001047e5860 0x1047e0000 + 22624
29  libdyld.dylib                   0x00000001b9742bb4 0x1b9742000 + 2996
马蒂

这个问题有几个不同的要素,所以让我尝试将其分解。

为什么我看到第0行?

Swift编译器在实际生成最终的编译二进制文件之前会进行大量的代码生成。在这种情况下,line 0是编译器告诉您在编译时生成代码的方式TableViewController.swift,但是该代码与原始源代码中的特定行不对应。

因为specialized这里函数,所以我更倾向于相信这是编译器生成的代码。这通常意味着编译器正在使用泛型类型。

我对Apple以这种方式传达此事件感到失望,但我们无能为力。我的理解是DWARF可以描述这种事情。但是,要么Apple不使用此功能,要么不将其写入崩溃报告,要么很可能两者兼而有之。

您可以通过使用atosdwarfdump象征地址来验证此行为0x0000000102c92748我敢打赌,它将输出完全相同的内容-第0行。过去,我曾经dwarfdump在这里四处查看以查看dSYM中是否编码了更多信息,但是我什么也没找到。但是那是几年前的事,所以情况可能已经改变。

第三方崩溃记者可能会帮忙吗?

它们都使用dSYM进行符号化,因此它们所包含的信息不能超过该文件中包含的信息。不管怎么说,这都值得一试,但是我怀疑您会在0号线上获得任何优势。

但是,他们可能将能够表示中的框架libswiftCore.dylib,这可能会很有帮助。

为什么会发生这种崩溃?

这是百万美元的问题。

我想查看实际的崩溃详细信息。我的猜测是这是一条非法指令,因为您已经崩溃在快速的运行时库中。可能发生的情况是运行时因某种非法状态而跳闸。解开零Optional肯定是这样。也可能是超出范围的Range操作。认为越界数组索引也可能会以这种方式失败,但是我不确定,我不确定。

我要做的只是仔细看一下发生了什么TableViewController.sendSmsMessage(sender:)请密切注意上面列出的内容,尤其是当它与任何通用标准库函数交互时。

我还将尝试象征那些libswiftCore.dylib框架。同样,您可以使用atos它,只需将其指向库本身并使用加载地址即可。我不确定Xcode在哪里将Swift库保存在内部,因此您可能只使用与应用程序捆绑在一起的lib的副本。

祝好运!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS Swift:deleteRowsAtIndexPaths崩溃

来自分类Dev

Firebase崩溃.. iOS Swift

来自分类Dev

iOS / Swift:tableView cellForRowAtIndexPath崩溃

来自分类Dev

Swift:“强制展开”返回nil而不崩溃

来自分类Dev

iOS8 Swift:deleteRowsAtIndexPaths崩溃

来自分类Dev

Swift iOS-放松Segue崩溃

来自分类Dev

检查swift数组是否不包含对象

来自分类Dev

iOS Swift:从iOS框架向iOS应用发送日志信息

来自分类Dev

Firebase包含值的结果数-iOS Swift

来自分类Dev

位置经理代表不称为iOS swift

来自分类Dev

ios swift 不圆角的 UILabel 和 UIbutton

来自分类Dev

Swift / iOS:分析(lldb)崩溃,PayPal iOS SDK

来自分类Dev

Swift Facebook登录崩溃

来自分类Dev

Swift SourceKitService崩溃

来自分类Dev

Swift中的CLPlacemark崩溃

来自分类Dev

CFStreamCreatePairWithSocketToHost与Swift意外崩溃

来自分类Dev

Swift SpriteKit println崩溃

来自分类Dev

Swift中的UIActivityViewController崩溃

来自分类Dev

Swift使Parse / FaceBookSDK崩溃

来自分类Dev

Swift-For Loop崩溃了

来自分类Dev

NSURLSession从Swift崩溃

来自分类Dev

Swift Facebook登录崩溃

来自分类Dev

Swift 3:PDFDocument 崩溃

来自分类Dev

了解iOS崩溃日志

来自分类Dev

如何使用Fabric SDK在Swift iOS应用中强制崩溃?

来自分类Dev

Swift iOS NSDictionary setValue崩溃-但是为什么呢?

来自分类Dev

Swift URL字符串编码在iOS上崩溃?

来自分类Dev

Swift UIAlertController-> ActionSheet iPad iOS8崩溃

来自分类Dev

在iOS上使用Swift进行NSArray迭代期间崩溃