Xamarin.iOS 的设备崩溃日志

Pau*_*opf 6 xamarin.ios crash-log

我在不同地点有一位客户使用“Ad-Hoc”部署测试我们的软件。他的应用程序崩溃了,我无法重现它。他给了我来自 XCode 管理器的崩溃日志,但我无法弄清楚如何将它们与我的 c#/Xamarin 解决方案相关联。

这是崩溃的线程(UI 线程)的日志。

Thread 0 Crashed:
0   libsystem_kernel.dylib          0x385541fc __pthread_kill + 8
1   libsystem_pthread.dylib         0x385bda2e pthread_kill + 54
2   libsystem_c.dylib               0x38504ff8 abort + 72
3   MedXChangeiOS                   0x008c8690 0x7a000 + 8709776
4   MedXChangeiOS                   0x008d906e 0x7a000 + 8777838
5   MedXChangeiOS                   0x0027a0c2 0x7a000 + 2097346
6   libsystem_platform.dylib        0x385b8060 _sigtramp + 40
7   libsystem_pthread.dylib         0x385bda2e pthread_kill + 54
8   libsystem_c.dylib               0x38504ff8 abort + 72
9   MedXChangeiOS                   0x0093faac 0x7a000 + 9198252
10  MedXChangeiOS                   0x008c8a48 0x7a000 + 8710728
11  MedXChangeiOS                   0x008e38b2 0x7a000 + 8820914
12  MedXChangeiOS                   0x008c825e 0x7a000 + 8708702
13  MedXChangeiOS                   0x008c7a1a 0x7a000 + 8706586
14  MedXChangeiOS                   0x008b32ce 0x7a000 + 8622798
15  ???                             0x1793ee04 0 + 395570692
16  MedXChangeiOS                   0x0030eca0 0x7a000 + 2706592
17  MedXChangeiOS                   0x0030ec44 0x7a000 + 2706500
18  MedXChangeiOS                   0x003157ec 0x7a000 + 2734060
19  MedXChangeiOS                   0x002c9fec 0x7a000 + 2424812
20  MedXChangeiOS                   0x002c95a8 0x7a000 + 2422184
21  MedXChangeiOS                   0x002c74c0 0x7a000 + 2413760
22  MedXChangeiOS                   0x002cfd14 0x7a000 + 2448660
23  MedXChangeiOS                   0x0032a200 0x7a000 + 2818560
24  MedXChangeiOS                   0x0034e460 0x7a000 + 2966624
25  UIKit                           0x300f0542 -[UIWindowController transitionViewDidComplete:fromView:toView:removeFromView:] + 1910
26  UIKit                           0x300efcf6 __101-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:animation:]_block_invoke293 + 166
27  UIKit                           0x300efc20 -[_UIViewControllerTransitionContext completeTransition:] + 72
28  UIKit                           0x300efb08 -[UITransitionView notifyDidCompleteTransition:] + 284
29  UIKit                           0x300ef610 -[UITransitionView _didCompleteTransition:] + 940
30  UIKit                           0x30010c32 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 174
31  UIKit                           0x30010b4a -[UIViewAnimationState animationDidStop:finished:] + 66
32  QuartzCore                      0x2fc68d04 CA::Layer::run_animation_callbacks(void*) + 228
33  libdispatch.dylib               0x38478d64 _dispatch_client_callout + 20
34  libdispatch.dylib               0x3847f7bc _dispatch_main_queue_callback_4CF$VARIANT$mp + 264
35  CoreFoundation                  0x2d83281c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4
36  CoreFoundation                  0x2d8310f0 __CFRunLoopRun + 1296
37  CoreFoundation                  0x2d79bce2 CFRunLoopRunSpecific + 518
38  CoreFoundation                  0x2d79bac6 CFRunLoopRunInMode + 102
39  GraphicsServices                0x3248927e GSEventRunModal + 134
40  UIKit                           0x3003da3c UIApplicationMain + 1132
41  MedXChangeiOS                   0x0034a4a4 0x7a000 + 2950308
42  MedXChangeiOS                   0x002feacc 0x7a000 + 2640588
43  MedXChangeiOS                   0x0029a82c 0x7a000 + 2230316
44  MedXChangeiOS                   0x004c8d50 0x7a000 + 4517200
45  MedXChangeiOS                   0x008e2f5a 0x7a000 + 8818522
46  MedXChangeiOS                   0x008f3312 0x7a000 + 8885010
47  MedXChangeiOS                   0x008f70a0 0x7a000 + 8900768
48  MedXChangeiOS                   0x008f6ee0 0x7a000 + 8900320
49  MedXChangeiOS                   0x008ad724 0x7a000 + 8599332
50  MedXChangeiOS                   0x0092ffe8 0x7a000 + 9134056
51  MedXChangeiOS                   0x0029a7e0 0x7a000 + 2230240
Run Code Online (Sandbox Code Playgroud)

对于应用程序MedXChangeiOS,我如何找出类/方法/行?

Rol*_*nge 7

您需要 dSYM 目录用于您的客户的构建。

生成发布版本时,Xamarin.iOS 将自动在 YourApp.app 目录旁边创建一个 YourApp.app.dSYM 目录。当您向客户发送构建时,您必须将此目录保存在您机器上的某个位置(下次构建应用程序时,dSYM 目录将被覆盖)[1]

稍后,当您从客户那里得到崩溃报告时,您可以运行symbolicatecrashApple的脚本,将内存地址转换为函数名和行号。[2]

[1] Build->Archive 命令会自动执行此操作。
[2] 确切位置因 Xcode 版本而异,但它位于 Xcode.app 中的某个位置。

  • @rufo:不,每个 dSYM 都是不同的,即使源代码完全相同(IIRC 中有一个 GUID 将 dSYM 与可执行文件匹配,并且可执行文件也有一个 GUID,每个构建都会更改)。 (2认同)