无法符号化 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)?
C# Monotouch/Xamarin.iOS - 可滚动的 UIView