отчет о сбое приложения xamarin.mac

мое приложение неожиданно разбилось, я не мог поймать какое-либо исключение... Я зарегистрировал обработчик:

static void Main (string [] args)
        {
            NSApplication.Init ();
            NSApplication.Main (args);

            AppDomain.CurrentDomain.UnhandledException += HandleUnhandledException;
        }


        static void HandleUnhandledException (object sender, UnhandledExceptionEventArgs e)
        {
            //Log the exception...
            FileHelper.CreateLogFile ("app crash", e.ExceptionObject.ToString ());
        }

Но это не называется.

Кроме того, я не вижу никакого отчета внутри:

~/Библиотека/Журналы/Диагностические отчеты

Есть ли способ увидеть отчеты о сбоях моего приложения?


person Nininea    schedule 25.10.2016    source источник


Ответы (2)


AppDomain.CurrentDomain.UnhandledException срабатывает только тогда, когда у вас возникает управляемое исключение, поднимающее вверх весь стек. Однако, если у вас происходит сбой в нативном коде, или с NSException в нативном коде, или выбрасывается управляемое исключение при обратном вызове из нативного кода, он, скорее всего, вообще не будет делать то, что вы хотите/будет вызываться.

Попробуйте это вместо этого:

ObjCRuntime.Runtime.MarshalManagedException += (sender, args) =>
{
    Console.WriteLine (args.Exception);
};

Вы также можете изучить эти параметры в mmp marshal-objectivec-exceptions и marshal-managed-exceptions (https://github.com/xamarin/xamarin-macios/blob/master/tools/common/Driver.cs#L24).

person Chris Hamons    schedule 27.10.2016

Проблема в том, что NSApplication.Main (args); запускает ваше приложение в основном цикле, поэтому он никогда не доходит до строки для добавления необработанного исключения, пока вы не закроете приложение.

Попробуйте это вместо этого:

    static void Main (string [] args)
    {
        NSApplication.Init ();

        AppDomain.CurrentDomain.UnhandledException += HandleUnhandledException;

        NSApplication.Main (args);
    }


    static void HandleUnhandledException (object sender, UnhandledExceptionEventArgs e)
    {
        //Log the exception...
        FileHelper.CreateLogFile ("app crash", e.ExceptionObject.ToString ());
    }
person Curtis    schedule 13.12.2018