无法符号化 Monotouch iOS 应用程序崩溃日志

Posted

技术标签:

【中文标题】无法符号化 Monotouch iOS 应用程序崩溃日志【英文标题】:Can't Symbolicate Monotouch iOS App Crash Log 【发布时间】:2012-01-23 16:41:36 【问题描述】:

我已经搜索并找到了许多关于此主题的 *** Q/A,但我仍然无法将我的 ios MonoTouch 应用程序的崩溃日志进行符号化。这是我的环境信息:

MonoDevelop 2.8.5  
Runtime:  
Mono 2.10.6 (tarball Fri Sep 16 00:13:06 EDT 2011)  
GTK 2.24.5  
GTK# (2.12.0.0)  
Apple Developer Tools:  
 Xcode 4.2 (828)  
 Build 4D199  
Monotouch: 5.0.4  
Operating System:  
Mac OS X 10.7.2  `

当然,当我在 Monodevelop 中构建应用程序时,我将其设置为 Debug|iPhone 配置,该配置启用调试并发出调试符号。我也可以验证是否正在生成一个 dsym 文件。

编辑 - 另一条可能相关的信息。 Xcode Organizer 告诉我它找不到与我手机上的版本相匹配的软件映像(5.0.1 - 9A405)。

当我将设备插入 (iPhone 4S) 时,日志会被导入,并且管理器窗口报告它正在象征日志。但是,我最终只会在日志中找到位置和偏移量:

Application Specific Information:
IMDSSMobile_iOS[22522] has active assertions beyond permitted time: 
(
    <SBProcessAssertion: 0x11c36880> identifier: Suspending process: IMDSSMobile_iOS[22522] permittedBackgroundDuration: 10.000000 reason: suspend owner pid:15 preventSuspend  preventThrottleDownCPU  preventThrottleDownUI 
)

Elapsed total CPU time (seconds): 2.410 (user 2.410, system 0.000), 12% CPU 
Elapsed application CPU time (seconds): 0.003, 0% CPU

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0:
0   libsystem_kernel.dylib          0x339da0d8 0x339c9000 + 69848
1   libsystem_c.dylib               0x3655bc44 0x36559000 + 11332
2   IMDSSMobile_iOS                 0x005b8f60 0x1000 + 5996384
3   IMDSSMobile_iOS                 0x00544208 0x1000 + 5517832
4   IMDSSMobile_iOS                 0x00545c24 0x1000 + 5524516
5   IMDSSMobile_iOS                 0x005b31bc 0x1000 + 5972412
6   IMDSSMobile_iOS                 0x0054e248 0x1000 + 5558856
7   IMDSSMobile_iOS                 0x0054c178 0x1000 + 5550456
8   IMDSSMobile_iOS                 0x0054d4bc 0x1000 + 5555388
9   IMDSSMobile_iOS                 0x00560620 0x1000 + 5633568
10  IMDSSMobile_iOS                 0x0057a88c 0x1000 + 5740684
11  libsystem_c.dylib               0x365b1532 0x36559000 + 361778
12  libsystem_c.dylib               0x3655bc44 0x36559000 + 11332
13  IMDSSMobile_iOS                 0x0063d654 0x1000 + 6538836
14  IMDSSMobile_iOS                 0x0063f224 0x1000 + 6545956
15  IMDSSMobile_iOS                 0x005c6b30 0x1000 + 6052656
16  IMDSSMobile_iOS                 0x002ef91c 0x1000 + 3074332
17  IMDSSMobile_iOS                 0x002eca04 0x1000 + 3062276
18  IMDSSMobile_iOS                 0x002e7780 0x1000 + 3041152
19  IMDSSMobile_iOS                 0x002e76e8 0x1000 + 3041000
20  IMDSSMobile_iOS                 0x002d7f24 0x1000 + 2977572
21  IMDSSMobile_iOS                 0x002d7cbc 0x1000 + 2976956
22  IMDSSMobile_iOS                 0x0036c220 0x1000 + 3584544
23  IMDSSMobile_iOS                 0x0036c104 0x1000 + 3584260
24  IMDSSMobile_iOS                 0x0042dec4 0x1000 + 4378308
25  IMDSSMobile_iOS                 0x0042d88c 0x1000 + 4376716
26  IMDSSMobile_iOS                 0x004305b8 0x1000 + 4388280
27  IMDSSMobile_iOS                 0x0045af54 0x1000 + 4562772
28  IMDSSMobile_iOS                 0x006c0e54 0x1000 + 7077460
29  Foundation                      0x31fff2f2 0x31fd6000 + 168690
30  Foundation                      0x31ffee2c 0x31fd6000 + 167468
31  Foundation                      0x31fd8f12 0x31fd6000 + 12050
32  CoreFoundation                  0x3809f7fc 0x38087000 + 100348
33  CoreFoundation                  0x380a048a 0x38087000 + 103562
34  UIKit                           0x3576c4b8 0x354f5000 + 2585784
35  UIKit                           0x356dc9c4 0x354f5000 + 1997252
36  UIKit                           0x355bbe9a 0x354f5000 + 814746
37  UIKit                           0x35531784 0x354f5000 + 247684
38  UIKit                           0x355923b2 0x354f5000 + 644018
39  UIKit                           0x35592350 0x354f5000 + 643920
40  UIKit                           0x35591c8a 0x354f5000 + 642186
41  UIKit                           0x355919be 0x354f5000 + 641470
42  UIKit                           0x3558eb30 0x354f5000 + 629552
43  IMDSSMobile_iOS                 0x00456b38 0x1000 + 4545336
44  IMDSSMobile_iOS                 0x0001927c 0x1000 + 98940
45  IMDSSMobile_iOS                 0x003856b8 0x1000 + 3688120
46  IMDSSMobile_iOS                 0x005361a4 0x1000 + 5460388
47  IMDSSMobile_iOS                 0x0062e4b0 0x1000 + 6476976
48  IMDSSMobile_iOS                 0x006c19e0 0x1000 + 7080416
49  UIKit                           0x355ab55e 0x354f5000 + 746846
50  UIKit                           0x35623ce0 0x354f5000 + 1240288
51  Foundation                      0x3207193c 0x31fd6000 + 637244
52  CoreFoundation                  0x38114a5c 0x38087000 + 580188
53  CoreFoundation                  0x381146c2 0x38087000 + 579266
54  CoreFoundation                  0x38113298 0x38087000 + 574104
55  CoreFoundation                  0x380964d6 0x38087000 + 62678
56  CoreFoundation                  0x3809639e 0x38087000 + 62366
57  GraphicsServices                0x37c14fc6 0x37c11000 + 16326
58  UIKit                           0x3552673c 0x354f5000 + 202556
59  IMDSSMobile_iOS                 0x0045aaa8 0x1000 + 4561576
60  IMDSSMobile_iOS                 0x00002d38 0x1000 + 7480
61  IMDSSMobile_iOS                 0x003856b8 0x1000 + 3688120
62  IMDSSMobile_iOS                 0x005361a4 0x1000 + 5460388
63  IMDSSMobile_iOS                 0x0062e4b0 0x1000 + 6476976
64  IMDSSMobile_iOS                 0x006315d8 0x1000 + 6489560
65  IMDSSMobile_iOS                 0x006305d8 0x1000 + 6485464
66  IMDSSMobile_iOS                 0x0053d254 0x1000 + 5489236
67  IMDSSMobile_iOS                 0x005305c0 0x1000 + 5436864
68  IMDSSMobile_iOS                 0x00002bc0 0x1000 + 7104

谁有其他的指点?我对崩溃发生的时间有一个大致的了解,并且我意识到这个错误(超出允许时间的断言)通常涉及在主线程上阻塞网络 IO,但我没有这样做,我不知道是什么否则可能会发生。从日志中查看有效的堆栈跟踪可能会很有帮助。

【问题讨论】:

崩溃的应用程序必须是MonoDevelop中的最后一个构建(即如果你构建&上传&运行你的应用程序,它会崩溃,然后在MonoDevelop中重建你的项目,崩溃日志不会被符号化) Rolf - 我相信确实如此。我会构建、上传、运行和崩溃,然后尝试查看报告。 您应该尝试运行“symbolicatecrash -v path/to/log.crash path/to/app.DSYM”并查看是否打印出任何错误(或将详细输出放在这里以便其他人可以诊断) 【参考方案1】:

符号化与 MT 或其他用于生成原生 iOS 应用图像的技术无关。

系统正在尝试符号化输出,但这是通过从 dSYM 文件加载数据来完成的,您需要确保 dSYM 文件与崩溃日志位于同一目录中,或者使用显式路径手动执行dSYM。

希望这会有所帮助。

-帕维尔

【讨论】:

我把crash log和dsym文件复制到一个common目录下,然后把log导入Organizer,效果很好。谢谢帕维尔。

以上是关于无法符号化 Monotouch iOS 应用程序崩溃日志的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 EventKit (Calendar) 集成并仍然支持 iOS 3.x (MonoTouch)?

iOS 或 MonoTouch 中的固有内存泄漏?

C# Monotouch/Xamarin.iOS - 可滚动的 UIView

MonoTouch (Xamarin.iOS) Facebook 应用程序切换支持 iOS 5+

删除 iOS 7 状态栏 [关闭]

我无法在 Monotouch UITableViewController 中禁用页眉或页脚