【问题标题】:Cannot understand the output of symbolicate crash log of an Xamarin.Forms app无法理解 Xamarin.Forms 应用程序的符号崩溃日志的输出
【发布时间】:2017-02-14 05:53:34
【问题描述】:

我正在尝试将 Xamarin.Forms 应用程序发送到 Apple App Store。 我使用 LLVM 编译器从 Visual Studio、Ad-Hoc 构建它。将 Mac 上的输出保存到另一个文件夹(.app、.ipa、.dSYM)。

现在,Apple 拒绝了它,因为该应用程序的 IPv6 存在问题,并且他们正在将崩溃日志附加到该问题中。当我尝试对崩溃日志进行符号化时,输出中没有任何与我的应用程序相关的内容,我唯一可以关联的是 Main 类,但它告诉我一个不存在的行号。

这是符号输出的一部分:http://pastebin.com/PjhCuTgV

是否有我遗漏的东西,或者从 Xamarin 调试 iOS 代码的更好方法?

--

编辑:我设法获得了更好的崩溃日志:

Last Exception Backtrace:
0   CoreFoundation                       0x193fb51b8 __exceptionPreprocess + 124
1   libobjc.A.dylib                      0x1929ec55c objc_exception_throw + 52
2   UIKit                                0x19a618490 +[UIStoryboard storyboardWithName:bundle:] + 780
3   UIKit                                0x19a0eca70 -[UIApplication _loadMainStoryboardFileNamed:bundle:] + 92
4   UIKit                                0x199ed5320 -[UIApplication _loadMainInterfaceFile] + 260
5   UIKit                                0x19a0eb6e8 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1364
6   UIKit                                0x19a100104 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke.3139 + 44
7   UIKit                                0x19a0e87ec -[UIApplication workspaceDidEndTransaction:] + 164
8   FrontBoardServices                   0x195b8b92c __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 32
9   FrontBoardServices                   0x195b8b798 -[FBSSerialQueue _performNext] + 172
10  FrontBoardServices                   0x195b8bb40 -[FBSSerialQueue _performNextFromRunLoopSource] + 52
11  CoreFoundation                       0x193f62b5c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 20
12  CoreFoundation                       0x193f624a4 __CFRunLoopDoSources0 + 520
13  CoreFoundation                       0x193f600a4 __CFRunLoopRun + 800
14  CoreFoundation                       0x193e8e2b8 CFRunLoopRunSpecific + 440
15  UIKit                                0x199ece7b0 -[UIApplication _run] + 604
16  UIKit                                0x199ec9534 UIApplicationMain + 204
17  MyApp                                0x100bb22e4 wrapper_managed_to_native_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr (<unknown>:1)
18  MyApp                                0x100b20c4c UIKit_UIApplication_Main_string___intptr_intptr (UIApplication.cs:79)
19  MyApp                                0x100b20c0c UIKit_UIApplication_Main_string___string_string (UIApplication.cs:63)
20  MyApp                                0x1001fb444 MyApp_iOS_Application_Main_string__ (<unknown>:1)
21  MyApp                                0x10047de54 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 240
22  MyApp                                0x100116434 mono_jit_runtime_invoke (mini-runtime.c:2551)
23  MyApp                                0x10017a658 do_runtime_invoke (object.c:2820)
24  MyApp                                0x10017d240 do_exec_main_checked (object.c:2978)
25  MyApp                                0x100100198 mono_jit_exec (driver.g.c:1049)
26  MyApp                                0x1001fadd0 xamarin_main (monotouch-main.m:485)
27  MyApp                                0x1014232dc main (main.arm64.m:159)
28  libdyld.dylib                        0x192e715b8 start + 0

【问题讨论】:

  • 我看到许多来自 Apple 的拒绝报告指出 IPv6 兼容性问题实际上与 IPv6 无关。只是一个抬头。在一种情况下,由于缺少权限描述,该应用程序在启动时崩溃,但 Apple 拒绝说明该应用程序与 IPv6 不兼容。此外,该崩溃日志根本没有符号化。有关如何符号化崩溃报告,请参阅此帖子:jmillerdev.net/symbolicating-ios-crash-files-xamarin-ios
  • 我看过这篇文章,并且我已经按照这篇博文中显示的每一步。我见过其他方法来表示崩溃日志,但再也没有得到任何细节......另外,我检查了权限描述,我只使用声明的那些。
  • 我有经理使用 HockeyApp 从崩溃日志中获得更好的输出。不知道为什么,我验证了所有 UUID,来自崩溃日志、.app、.dSYM,来自 mdfind 或 dwarfdump。请参阅原始帖子以获取更新的日志。谢谢
  • 尝试加载情节提要时似乎抛出了 Obj-C 异常。您不应该有来自 X.Forms 应用程序的 Main.storyboard,因此请查看 iOS 项目的 Info.plist 并确保您没有设置主界面文件。但这只是基于我所看到的猜测。也可能是您的 Launch.storyboard 中的问题。
  • 感谢您的帮助,我确实将主故事板值设置为 LaunchScreen。在没有这些值的情况下尝试过,仍然没有用。发现了别的东西,审核通过了,会写答案的。

标签: xamarin xamarin.ios symbolicatecrash


【解决方案1】:

我的问题是应用启动时间过长。在这种情况下,崩溃日志应该有异常代码:0x8badf00d。根据苹果文档https://developer.apple.com/library/content/technotes/tn2151/_index.html

The exception code 0x8badf00d indicates that an application has been terminated by iOS because a watchdog timeout occurred. The application took too long to launch, terminate, or respond to system events. 

在我的例子中,日志的异常代码为 0x0000000000000000,这只是表示未处理的 obj-c 代码异常。 Apple 没有提供任何帮助来发现这个问题,因为在我们的设备上它在 TestFlight 上正常工作。我可以让他们帮助我了解他们的环境的最重要的是:“我按下了图标,它就崩溃了”。

我修复我的应用程序的做法是尽可能减少初始加载时间,导航到“加载视图”,其中仅包含一个 ActivityMonitor。当应用程序完全初始化后,我会导航到正确的视图。

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多