Сбой приложения MonoTouch на устройстве при запуске в режиме отладки (не в выпуске) - PullRequest
1 голос
/ 19 августа 2011

У меня есть проблема, которая затрудняет отладку моего приложения MonoTouch.Если я выполняю компиляцию release , то приложение работает правильно, но если я выполняю компиляцию debug , то приложение аварийно завершает работу при запуске, и исключение даже не фиксируется MonoTouch.

Я понятия не имею, как определить, что здесь происходит не так.В органайзере XCode я вижу запись в журнале сбоев, но не вижу в этом никакого смысла.Я скопирую журнал сбоев здесь (усеченный, потому что он ОЧЕНЬ длинный!);надеюсь, кто-то здесь сможет пролить на него какой-то свет или может дать мне какой-то другой способ зафиксировать исключение в MonoTouch, чтобы я мог видеть, что происходит не так.

Ответы [ 2 ]

2 голосов
/ 30 мая 2012

Я знаю, что это старый вопрос, но я столкнулся с той же проблемой, когда приложение сильно зависало, и трассировка стека рекурсивно вызывала те же функции (та же ошибка, что и у OP).

Проблема с нашим приложением заключалась в том, что мы не включили надлежащие флаги gcc_flags для одной из платформ, на которую ссылалась статическая библиотека. В нашем случае нам пришлось добавить следующий аргумент в mtouch, поскольку одна из статических библиотек, которую мы использовали, опиралась на ExternalAccessory.framework:

-gcc_flags "-L${ProjectDir} -framework ExternalAccessory -ObjC"

После того, как я добавил это, наше приложение перестало зависать и начинало работать как задумано.

Надеюсь, этот ответ может помешать кому-нибудь вырвать себе волосы, как я!

2 голосов
/ 19 августа 2011

Это похоже на рекурсию.

4 Mobileforms 0x0041d6ec mono_runtime_invoke (object.c: 2756)

5 Mobileforms 0x004c8924 monotouch_static_trampoline (monotouch-клей.m: 704)

6 Mobileforms 0x00130c4c wrapper_managed_to_native_MonoTouch_ObjCRuntime_Messaging_IntPtr_objc_msgSend_intptr_intptr + 60

7 Mobileforms 0x00288c34 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 192

8 Mobileforms 0x00315cfc mono_jit_runtime_invoke (mini.c: 5754)

9 Mobileforms 0x0041d6ec mono_runtime_invoke (object.c: 2756)

и это происходит из фонового потока с использованием адресной книги.

Мой совет:

  • Проверьте, происходит ли это также на симуляторе. Работают ли сборки Debug и Release одинаково?

  • Затем проверьте, идентичны ли все ваши варианты для сборок Release и Debug. Что-то другое может привести к тому, что код будет вести себя по-другому;

  • Если у вас есть #if DEBUG внутри вашего кода (и комментировать их, если есть);

  • В крайнем случае создайте небольшой автономный тестовый набор и заполните отчет об ошибке до http://bugzilla.xamarin.com

...