更好的MonoTouch与TestFlight崩溃

我们已经把TestFlight和TestFlight SDK与MonoTouch结合起来,到目前为止效果很好。

我们注意到的一件事是崩溃报告更适合于Obj-C应用程序。

上传一个压缩的dSYM文件后,它们看起来像这样:

0 OurApp 0x007a7116 testflight_backtrace + 170 1 OurApp0x007a7c3c TFSignalHandler + 208 2 libsystem_c.dylib 0x34f68538 _sigtramp + 48 3 libsystem_c.dylib 0x34f5df5a pthread_kill + 54 4 libsystem_c.dylib 0x34f56fea abort + 94 5 OurApp 0x007793b3 monoeg_g_logv (goutput.c:137) 6 OurApp 0x0077941f monoeg_g_log (goutput.c:147) 7 OurApp 0x005f1393 get_numerous_trampoline (aot-runtime.c:3447) 8 OurApp 0x005f1b2f mono_aot_get_imt_thunk (aot-runtime.c:3576) 9 OurApp 0x006e2c83 initialize_imt_slot (object.c:1247) 10 OurApp 0x006e321f build_imt_slots (object.c:1371) 11 OurApp 0x006e356f mono_vtable_build_imt_slot (object.c:1439) 12 OurApp 0x005fcf83 mono_convert_imt_slot_to_vtable_slot (mini-trampolines.c:198) 13 OurApp 0x005fd50f common_call_trampoline (mini-trampolines.c:333) 14 OurApp 0x005fe573 mono_vcall_trampoline (mini-trampolines.c:644) 15 OurApp 0x0056a68f generic_trampoline_vcall (mscorlib.dll.6.s:194345) 16 OurApp 0x00416b4f System_Collections_Generic_List_1__ctor_System_Collections_Generic_IEnumerable_1_T (mscorlib.dll.6.s:32014) 17 OurApp 0x0026955b System_Linq_Enumerable_ToList_TSource_System_Collections_Generic_IEnumerable_1_TSource (System.Core.dll.6.s:1917) 

所以你可以告诉一般的C#函数发生崩溃的地方。 (注意:这个崩溃是MonoTouch 5.0.1中的一个错误,Linq的generics被破坏了,似乎在5.0.2中被修复了)

在这里得到完整的C#堆栈跟踪将是很好的,有关如何做到这一点的任何想法? 我可以钩入AppDomain.UnhandledException并在我的static void Main方法中放置try-catch,但是想知道是否有办法将堆栈跟踪报告给TestFlight。

我不熟悉MonoTouch,但是使用TestFlight SDK的Remote Loggingfunction呢?