internal static void MaybeBreakIntoDebugger() { lock (HelperMethods.staticSyncRoot) { if (HelperMethods.debuggerBreak.HasValue) { return; } } if (UnsafeNativeMethods.GetSettingValue("PreLoadSQLite_BreakIntoDebugger", null) != null) { try { CultureInfo currentCulture = CultureInfo.CurrentCulture; object[] processId = new object[] { HelperMethods.GetProcessId() }; Console.WriteLine(HelperMethods.StringFormat(currentCulture, "Attach a debugger to process {0} and press any key to continue.", processId)); Console.ReadKey(); } catch (Exception exception1) { Exception exception = exception1; try { CultureInfo cultureInfo = CultureInfo.CurrentCulture; object[] objArray = new object[] { typeof(Console), exception }; Trace.WriteLine(HelperMethods.StringFormat(cultureInfo, "Failed to issue debugger prompt, {0} may be unusable: {1}", objArray)); } catch { } } try { Debugger.Break(); lock (HelperMethods.staticSyncRoot) { HelperMethods.debuggerBreak = new bool?(true); } } catch { lock (HelperMethods.staticSyncRoot) { HelperMethods.debuggerBreak = new bool?(false); } throw; } } }