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;
         }
     }
 }