2013-10-18 177 views
2

我有一个客户在不同的位置使用“Ad-Hoc”部署来测试我们的软件。他的应用崩溃了,我无法重现它。他给了我来自XCode组织者的崩溃日志,但我无法想象如何将它们与我的c#/ Xamarin解决方案联系起来。Xamarin.iOS设备崩溃日志

这是崩溃的线程(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 

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

回答

4

您需要dSYM目录来建立您的客户。

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

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

[1] Build-> Archive命令自动执行此操作。
[2] Xcode发行版的确切位置各不相同,但它位于Xcode.app内。

+0

您是否需要保存dSYM目录?你不能去签出你的源代码库提交并重建吗? (实际上应该是相同的dSYM)...对吗? – rufo

+1

@rufo:不,每个dSYM都是不同的,即使使用完全相同的源代码(IIRC在那里有一个GUID将dSYM与可执行文件相匹配,并且可执行文件也具有每个版本都会更改的GUID)。 –