Better 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 были испорчены, кажется, исправлено в 5.0.2)

Было бы неплохо получить здесь полную трассировку стека C #, есть какие-нибудь мысли о том, как это сделать? Я мог подключиться к AppDomain.UnhandledException и попытаться отловить свой static void Main метод, но мне было интересно, есть ли способ сообщить о трассировке стека в TestFlight.


person jonathanpeppers    schedule 28.11.2011    source источник
comment
небольшое примечание, подтверждающее, что в 5.0.1 была регрессия (т.е. 5.0 была в порядке), что в некоторых случаях вызывает выброс EngineExecutionException. Это было исправлено в 5.0.2.   -  person poupou    schedule 28.11.2011
comment
Я тоже изучаю эту проблему и ничего не придумал. (Честно говоря, я бы согласился только на номер строки.)   -  person vlad259    schedule 21.12.2011
comment
Я думал о том, чтобы попытаться отправить полную информацию об исключении в качестве контрольной точки (хотя это не для этого). Однако я не уверен, как это будет выглядеть на TestFlight.   -  person jonathanpeppers    schedule 21.12.2011
comment
Примечание: установка трассировки стека через контрольную точку выглядит ужасно, не рекомендую ее в качестве решения.   -  person jonathanpeppers    schedule 04.01.2012
comment
Я считаю, что вы можете установить собственный обработчик исключений, который TestFlight SDK демонстрирует, как это сделать. Вероятно, вы могли бы получить там свою трассировку стека функций и отправить ее в TestFlight с помощью контроллера обратной связи или чего-то еще.   -  person Tristan    schedule 07.01.2012
comment
Эти сбои обычно означают, что приложение закрывается (поэтому нет возможности показать контроллер обратной связи). Можете ли вы опубликовать ссылку на упомянутый вами документ пользовательского обработчика исключений? Только думаю, что я нашел здесь вилку на GitHub: github.com/danielctull/TestFlight-SDK   -  person jonathanpeppers    schedule 08.01.2012
comment
Исправлено ли это в последней версии? support.testflightapp.com/discussions/sdk/   -  person Joshua Drake    schedule 11.01.2012
comment
Да, я использовал последнюю версию, упомянутую в этом обсуждении, я загрузил файл dSym, который дал результат выше в моем вопросе. Моя проблема связана с тем, что мы используем MonoTouch и хотим видеть трассировки стека в стиле C #, которые мы можем создавать сами и сообщать - мы просто не знаем, как передать пользовательскую трассировку стека в TestFlight.   -  person jonathanpeppers    schedule 12.01.2012
comment
Я прочитал это как «Я хочу, чтобы MonoTouch падал более эффективно». ;)   -  person nicodemus13    schedule 06.02.2012
comment
У нас была та же проблема, и в итоге мы использовали оператор try / catch around Main, сбрасывая трассировки стека C # в файл журнала и отправляя его на наш сервер.   -  person Timothy Groote    schedule 06.02.2012
comment
Это старый вопрос, но для всех, кто ищет, нам очень повезло с Raygun.io в наших приложениях Monotouch. Он собирает гораздо лучшую и полную трассировку стека.   -  person Ender2050    schedule 23.08.2014
comment
@ Ender2050, мы тоже им пользуемся. Согласовано.   -  person jonathanpeppers    schedule 23.08.2014


Ответы (1)


Я не знаком с MonoTouch, но как насчет использования функций удаленного ведения журнала TestFlight SDK?

person bryanjclark    schedule 07.02.2012
comment
Я использовал привязку MonoTouch здесь: github.com/ayoung/monotouch-testflight Что я не делаю » Я не знаю, есть ли у него настройка функции TFlog Obj-C для использования из C #. Я постараюсь сам связать все недостающие методы и посмотреть, решит ли какой-нибудь из них эту проблему. - person jonathanpeppers; 08.02.2012
comment
Нашел более новый (фиксация 01 февраля) здесь: github.com/mono/ monotouch-bindings / tree / master / TestFlight Собираюсь попробовать. - person jonathanpeppers; 08.02.2012
comment
Хорошо, использование TestFlight.Log() работает очень хорошо. Вы должны регистрировать исключения в AppDomain.UnhandledException и static void Main(). C # stacktrace не отображается как отчет о сбое, но вы можете просмотреть его в журнале сеанса. - person jonathanpeppers; 14.03.2012
comment
Что вы отправляете в TestFlight.Log? - person Piotr Tomasik; 23.05.2012