On Win32 call G_BREAKPOINT() if being debugged.
authorTor Lillqvist <tml@novell.com>
Wed, 19 Jan 2005 01:55:40 +0000 (01:55 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Wed, 19 Jan 2005 01:55:40 +0000 (01:55 +0000)
2005-01-19  Tor Lillqvist  <tml@novell.com>

* glib/gbacktrace.c (g_on_error_stack_trace): On Win32 call
G_BREAKPOINT() if being debugged.

* glib/gmessages.c (g_logv): For fatal messages on Win32, use
G_BREAKPOINT() also without G_ENABLE_DEBUG, but only if being
debugged. Suggestion by Ulf Lamping. Otherwise use FatalAppExit().

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
glib/gbacktrace.c
glib/gmessages.c

index 4f552df..f7d7b0f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-01-19  Tor Lillqvist  <tml@novell.com>
+
+       * glib/gbacktrace.c (g_on_error_stack_trace): On Win32 call
+       G_BREAKPOINT() if being debugged.
+
+       * glib/gmessages.c (g_logv): For fatal messages on Win32, use
+       G_BREAKPOINT() also without G_ENABLE_DEBUG, but only if being
+       debugged. Suggestion by Ulf Lamping. Otherwise use FatalAppExit().
+
 2005-01-18  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/gqsort.c: Don't include alloca.h. It is not needed,
index 4f552df..f7d7b0f 100644 (file)
@@ -1,3 +1,12 @@
+2005-01-19  Tor Lillqvist  <tml@novell.com>
+
+       * glib/gbacktrace.c (g_on_error_stack_trace): On Win32 call
+       G_BREAKPOINT() if being debugged.
+
+       * glib/gmessages.c (g_logv): For fatal messages on Win32, use
+       G_BREAKPOINT() also without G_ENABLE_DEBUG, but only if being
+       debugged. Suggestion by Ulf Lamping. Otherwise use FatalAppExit().
+
 2005-01-18  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/gqsort.c: Don't include alloca.h. It is not needed,
index 4f552df..f7d7b0f 100644 (file)
@@ -1,3 +1,12 @@
+2005-01-19  Tor Lillqvist  <tml@novell.com>
+
+       * glib/gbacktrace.c (g_on_error_stack_trace): On Win32 call
+       G_BREAKPOINT() if being debugged.
+
+       * glib/gmessages.c (g_logv): For fatal messages on Win32, use
+       G_BREAKPOINT() also without G_ENABLE_DEBUG, but only if being
+       debugged. Suggestion by Ulf Lamping. Otherwise use FatalAppExit().
+
 2005-01-18  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/gqsort.c: Don't include alloca.h. It is not needed,
index 4f552df..f7d7b0f 100644 (file)
@@ -1,3 +1,12 @@
+2005-01-19  Tor Lillqvist  <tml@novell.com>
+
+       * glib/gbacktrace.c (g_on_error_stack_trace): On Win32 call
+       G_BREAKPOINT() if being debugged.
+
+       * glib/gmessages.c (g_logv): For fatal messages on Win32, use
+       G_BREAKPOINT() also without G_ENABLE_DEBUG, but only if being
+       debugged. Suggestion by Ulf Lamping. Otherwise use FatalAppExit().
+
 2005-01-18  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/gqsort.c: Don't include alloca.h. It is not needed,
index 004a6aa..ccd1f82 100644 (file)
@@ -185,7 +185,10 @@ g_on_error_stack_trace (const gchar *prg_name)
     ;
   glib_on_error_halt = TRUE;
 #else
-  abort ();
+  if (IsDebuggerPresent ())
+    G_BREAKPOINT ();
+  else
+    abort ();
 #endif
 }
 
index eb11d16..5b394f4 100644 (file)
@@ -476,17 +476,28 @@ g_logv (const gchar   *log_domain,
 #ifdef G_OS_WIN32
              gchar *locale_msg = g_locale_from_utf8 (fatal_msg_buf, -1, NULL, NULL, NULL);
              
-             MessageBox (NULL, locale_msg, NULL,
-                         MB_ICONERROR|MB_SETFOREGROUND);
-#endif
-#if defined (G_ENABLE_DEBUG) && (defined (SIGTRAP) || defined (G_OS_WIN32))
+             if (IsDebuggerPresent () && !(test_level & G_LOG_FLAG_RECURSION))
+               {
+                 MessageBox (NULL, locale_msg, NULL,
+                             MB_ICONERROR|MB_SETFOREGROUND);
+                 G_BREAKPOINT ();
+               }
+
+             FatalAppExit (0, locale_msg);
+             /* In case somebody runs a debug Windows and chooses to
+              * continue, don't let her.
+              */
+             abort ();
+#else
+#if defined (G_ENABLE_DEBUG) && defined (SIGTRAP)
              if (!(test_level & G_LOG_FLAG_RECURSION))
                G_BREAKPOINT ();
              else
                abort ();
-#else /* !G_ENABLE_DEBUG || !(SIGTRAP || G_OS_WIN32) */
+#else /* !G_ENABLE_DEBUG || !SIGTRAP */
              abort ();
-#endif /* !G_ENABLE_DEBUG || !(SIGTRAP || G_OS_WIN32) */
+#endif /* !G_ENABLE_DEBUG || !SIGTRAP */
+#endif /* !G_OS_WIN32 */
            }
          
          depth--;