/// <summary> /// Initializes the Splunk MINT plugin with additions for Xamarin. /// </summary> /// <param name="apiKey">Your Splunk MINT API key.</param> public void InitAndStartXamarinSession(string apiKey) { XamarinHelper.XamarinVersion("4.0.1"); XamarinHelper.XamarinArchitecture("armv7s"); TaskScheduler.UnobservedTaskException += UnobservedTaskExceptionsHandler; AsyncSynchronizationContext.ExceptionCaught += SyncContextExceptionHandler; AsyncSynchronizationContext.Register(); if (Debugger.IsAttached) { DisableCrashReporter(); } IntPtr sigbus = Marshal.AllocHGlobal(512); IntPtr sigsegv = Marshal.AllocHGlobal(512); // Store Mono SIGSEGV and SIGBUS handlers sigaction(Signal.SIGBUS, IntPtr.Zero, sigbus); sigaction(Signal.SIGSEGV, IntPtr.Zero, sigsegv); InitAndStartSession(apiKey); // Restore Mono SIGSEGV and SIGBUS handlers sigaction(Signal.SIGBUS, sigbus, IntPtr.Zero); sigaction(Signal.SIGSEGV, sigsegv, IntPtr.Zero); Marshal.FreeHGlobal(sigbus); Marshal.FreeHGlobal(sigsegv); }
/// <summary> /// Registers the async handler for unawaited void and Task unhandled exceptions that are thrown in the application. /// </summary> /// <remarks> /// This function might be needed in special cases where the synchronization context could be <c>null</c> in early initialization. /// The async handlers are registered in the initialization process of the component. /// </remarks> public void RegisterAsyncHandlerContext() { AsyncSynchronizationContext.ExceptionCaught += SyncContextExceptionHandler; AsyncSynchronizationContext.Register(); }