mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-11 23:16:14 +01:00
New header containing GTK_DEBUG-style debugging support for GLib.
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging support for GLib. Currently only the fatal_warnings debug option exists. * glib/gmessages.c (g_log_msg_prefix_init): New one-shot function for parsing G_MESSAGES_PREFIXED. (_g_debug_init): New one-shot function for parsing G_DEBUG. (g_log_write_prefix): Use g_log_msg_prefix_init(). (g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init(). * glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h. * glib/Makefile.am (IGNORE_HFILES): Add gdebug.h. * glib/running.sgml: Document the G_DEBUG environment variable. * glib/tmpl/threads.sgml: Replace g_thread_wait() by g_thread_join() in two places.
This commit is contained in:
parent
470d428f1d
commit
642897a7f3
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging
|
||||||
|
support for GLib. Currently only the fatal_warnings debug option exists.
|
||||||
|
|
||||||
|
* glib/gmessages.c (g_log_msg_prefix_init): New one-shot function
|
||||||
|
for parsing G_MESSAGES_PREFIXED.
|
||||||
|
(_g_debug_init): New one-shot function for parsing G_DEBUG.
|
||||||
|
(g_log_write_prefix): Use g_log_msg_prefix_init().
|
||||||
|
(g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init().
|
||||||
|
|
||||||
|
* glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h.
|
||||||
|
|
||||||
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging
|
||||||
|
support for GLib. Currently only the fatal_warnings debug option exists.
|
||||||
|
|
||||||
|
* glib/gmessages.c (g_log_msg_prefix_init): New one-shot function
|
||||||
|
for parsing G_MESSAGES_PREFIXED.
|
||||||
|
(_g_debug_init): New one-shot function for parsing G_DEBUG.
|
||||||
|
(g_log_write_prefix): Use g_log_msg_prefix_init().
|
||||||
|
(g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init().
|
||||||
|
|
||||||
|
* glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h.
|
||||||
|
|
||||||
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging
|
||||||
|
support for GLib. Currently only the fatal_warnings debug option exists.
|
||||||
|
|
||||||
|
* glib/gmessages.c (g_log_msg_prefix_init): New one-shot function
|
||||||
|
for parsing G_MESSAGES_PREFIXED.
|
||||||
|
(_g_debug_init): New one-shot function for parsing G_DEBUG.
|
||||||
|
(g_log_write_prefix): Use g_log_msg_prefix_init().
|
||||||
|
(g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init().
|
||||||
|
|
||||||
|
* glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h.
|
||||||
|
|
||||||
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging
|
||||||
|
support for GLib. Currently only the fatal_warnings debug option exists.
|
||||||
|
|
||||||
|
* glib/gmessages.c (g_log_msg_prefix_init): New one-shot function
|
||||||
|
for parsing G_MESSAGES_PREFIXED.
|
||||||
|
(_g_debug_init): New one-shot function for parsing G_DEBUG.
|
||||||
|
(g_log_write_prefix): Use g_log_msg_prefix_init().
|
||||||
|
(g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init().
|
||||||
|
|
||||||
|
* glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h.
|
||||||
|
|
||||||
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging
|
||||||
|
support for GLib. Currently only the fatal_warnings debug option exists.
|
||||||
|
|
||||||
|
* glib/gmessages.c (g_log_msg_prefix_init): New one-shot function
|
||||||
|
for parsing G_MESSAGES_PREFIXED.
|
||||||
|
(_g_debug_init): New one-shot function for parsing G_DEBUG.
|
||||||
|
(g_log_write_prefix): Use g_log_msg_prefix_init().
|
||||||
|
(g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init().
|
||||||
|
|
||||||
|
* glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h.
|
||||||
|
|
||||||
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging
|
||||||
|
support for GLib. Currently only the fatal_warnings debug option exists.
|
||||||
|
|
||||||
|
* glib/gmessages.c (g_log_msg_prefix_init): New one-shot function
|
||||||
|
for parsing G_MESSAGES_PREFIXED.
|
||||||
|
(_g_debug_init): New one-shot function for parsing G_DEBUG.
|
||||||
|
(g_log_write_prefix): Use g_log_msg_prefix_init().
|
||||||
|
(g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init().
|
||||||
|
|
||||||
|
* glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h.
|
||||||
|
|
||||||
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging
|
||||||
|
support for GLib. Currently only the fatal_warnings debug option exists.
|
||||||
|
|
||||||
|
* glib/gmessages.c (g_log_msg_prefix_init): New one-shot function
|
||||||
|
for parsing G_MESSAGES_PREFIXED.
|
||||||
|
(_g_debug_init): New one-shot function for parsing G_DEBUG.
|
||||||
|
(g_log_write_prefix): Use g_log_msg_prefix_init().
|
||||||
|
(g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init().
|
||||||
|
|
||||||
|
* glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h.
|
||||||
|
|
||||||
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/gdebug.h: New header containing GTK_DEBUG-style debugging
|
||||||
|
support for GLib. Currently only the fatal_warnings debug option exists.
|
||||||
|
|
||||||
|
* glib/gmessages.c (g_log_msg_prefix_init): New one-shot function
|
||||||
|
for parsing G_MESSAGES_PREFIXED.
|
||||||
|
(_g_debug_init): New one-shot function for parsing G_DEBUG.
|
||||||
|
(g_log_write_prefix): Use g_log_msg_prefix_init().
|
||||||
|
(g_messages_init): Use g_log_msg_prefix_init() and _g_debug_init().
|
||||||
|
|
||||||
|
* glib/Makefile.am (libglib_1_3_la_SOURCES): Add gdebug.h.
|
||||||
|
|
||||||
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
Wed Feb 20 22:35:42 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
Fixes from Miroslaw Dobrzanski-Neumann (#71963)
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
2002-02-21 Matthias Clasen <maclas@gmx.de>
|
||||||
|
|
||||||
|
* glib/Makefile.am (IGNORE_HFILES): Add gdebug.h.
|
||||||
|
|
||||||
|
* glib/running.sgml: Document the G_DEBUG environment variable.
|
||||||
|
|
||||||
|
* glib/tmpl/threads.sgml: Replace g_thread_wait() by
|
||||||
|
g_thread_join() in two places.
|
||||||
|
|
||||||
2002-02-20 Sven Neumann <sven@gimp.org>
|
2002-02-20 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
* gobject/gobject-sections.txt
|
* gobject/gobject-sections.txt
|
||||||
|
@ -34,7 +34,8 @@ IGNORE_HFILES= \
|
|||||||
gunicomp.h \
|
gunicomp.h \
|
||||||
gunidecomp.h \
|
gunidecomp.h \
|
||||||
gunichartables.h \
|
gunichartables.h \
|
||||||
glibconfig-sysdefs.h
|
glibconfig-sysdefs.h \
|
||||||
|
gdebug.h
|
||||||
|
|
||||||
# Extra files to add when scanning
|
# Extra files to add when scanning
|
||||||
EXTRA_HFILES=
|
EXTRA_HFILES=
|
||||||
|
@ -38,7 +38,27 @@ variables like <envar>LANG</envar>, <envar>PATH</envar> or <envar>HOME</envar>.
|
|||||||
<para>
|
<para>
|
||||||
A list of log levels for which messages should be prefixed by the
|
A list of log levels for which messages should be prefixed by the
|
||||||
program name and PID of the application. The default is to prefix
|
program name and PID of the application. The default is to prefix
|
||||||
everything except %G_LOG_LEVEL_MESSAGE and %G_LOG_LEVEL_INFO.
|
everything except <literal>G_LOG_LEVEL_MESSAGE</literal> and <literal>G_LOG_LEVEL_INFO</literal>.
|
||||||
|
</para>
|
||||||
|
</formalpara>
|
||||||
|
|
||||||
|
<formalpara>
|
||||||
|
<title><envar>G_DEBUG</envar></title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If GLib has been configured with <option>--enable-debug=yes</option>,
|
||||||
|
this variable can be set to a list of debug options, which cause GLib
|
||||||
|
to print out different types of debugging information.
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>fatal_warnings</term>
|
||||||
|
<listitem><para>Causes GLib to abort the program at the first call
|
||||||
|
to <link linkend="g-warning">g_warning</link>(). This option is
|
||||||
|
special in that it doesn't require GLib to be configured with
|
||||||
|
debugging support.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
</para>
|
</para>
|
||||||
</formalpara>
|
</formalpara>
|
||||||
|
|
||||||
@ -61,9 +81,9 @@ static volatile gulong g_trap_free_size;
|
|||||||
static volatile gulong g_trap_realloc_size;
|
static volatile gulong g_trap_realloc_size;
|
||||||
static volatile gulong g_trap_malloc_size;
|
static volatile gulong g_trap_malloc_size;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
If set to a size > 0, <link linkend="g-free">g_free()</link>,
|
If set to a size > 0, <link linkend="g-free">g_free</link>(),
|
||||||
<link linkend="g-realloc">g_realloc()</link> and
|
<link linkend="g-realloc">g_realloc</link>() and
|
||||||
<link linkend="g-malloc">g_malloc()</link> will be intercepted if the size
|
<link linkend="g-malloc">g_malloc</link>() will be intercepted if the size
|
||||||
matches the size of the corresponding memory block. This will only work with
|
matches the size of the corresponding memory block. This will only work with
|
||||||
<literal>g_mem_set_vtable (glib_mem_profiler_table)</literal> upon startup
|
<literal>g_mem_set_vtable (glib_mem_profiler_table)</literal> upon startup
|
||||||
though, because memory profiling is required to match on the memory block sizes.
|
though, because memory profiling is required to match on the memory block sizes.
|
||||||
|
@ -274,7 +274,7 @@ This function creates a new thread with the priority @priority.
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
If @joinable is %TRUE, you can wait for this threads termination
|
If @joinable is %TRUE, you can wait for this threads termination
|
||||||
calling g_thread_wait(). Otherwise the thread will just disappear, when
|
calling g_thread_join(). Otherwise the thread will just disappear, when
|
||||||
ready.
|
ready.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@ -304,7 +304,7 @@ platform, if @stack_size is 0.
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
If @joinable is %TRUE, you can wait for this threads termination
|
If @joinable is %TRUE, you can wait for this threads termination
|
||||||
calling g_thread_wait(). Otherwise the thread will just disappear, when
|
calling g_thread_join(). Otherwise the thread will just disappear, when
|
||||||
ready. If @bound is %TRUE, this thread will be scheduled in the system
|
ready. If @bound is %TRUE, this thread will be scheduled in the system
|
||||||
scope, otherwise the implementation is free to do scheduling in the
|
scope, otherwise the implementation is free to do scheduling in the
|
||||||
process scope. The first variant is more expensive resource-wise, but
|
process scope. The first variant is more expensive resource-wise, but
|
||||||
|
@ -81,7 +81,8 @@ libglib_1_3_la_SOURCES = \
|
|||||||
gunicomp.h \
|
gunicomp.h \
|
||||||
gunidecomp.h \
|
gunidecomp.h \
|
||||||
gunidecomp.c \
|
gunidecomp.c \
|
||||||
gutils.c
|
gutils.c \
|
||||||
|
gdebug.h
|
||||||
|
|
||||||
EXTRA_libglib_1_3_la_SOURCES = \
|
EXTRA_libglib_1_3_la_SOURCES = \
|
||||||
giounix.c \
|
giounix.c \
|
||||||
|
63
glib/gdebug.h
Normal file
63
glib/gdebug.h
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/* GLIB - Library of useful routines for C programming
|
||||||
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Modified by the GLib Team and others 1997-2000. See the AUTHORS
|
||||||
|
* file for a list of people on the GLib Team. See the ChangeLog
|
||||||
|
* files for a list of changes. These files are distributed with
|
||||||
|
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __G_DEBUG_H__
|
||||||
|
#define __G_DEBUG_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
G_DEBUG_FATAL_WARNINGS = 1 << 0,
|
||||||
|
} GDebugFlag;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef G_ENABLE_DEBUG
|
||||||
|
|
||||||
|
#define G_NOTE(type, action) G_STMT_START { \
|
||||||
|
if (!_g_debug_initialized) \
|
||||||
|
{ _g_debug_init (); } \
|
||||||
|
if (_g_debug_flags & G_DEBUG_##type) \
|
||||||
|
{ action; }; } G_STMT_END
|
||||||
|
|
||||||
|
#else /* !G_ENABLE_DEBUG */
|
||||||
|
|
||||||
|
#define G_NOTE(type, action)
|
||||||
|
|
||||||
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
|
||||||
|
GLIB_VAR gboolean _g_debug_initialized;
|
||||||
|
GLIB_VAR guint _g_debug_flags;
|
||||||
|
|
||||||
|
void _g_debug_init ();
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __G_DEBUG_H__ */
|
@ -43,6 +43,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include "gdebug.h"
|
||||||
|
|
||||||
#ifdef G_OS_WIN32
|
#ifdef G_OS_WIN32
|
||||||
typedef FILE* GFileDescriptor;
|
typedef FILE* GFileDescriptor;
|
||||||
@ -206,38 +207,40 @@ write_string (GFileDescriptor fd,
|
|||||||
write (fd, string, strlen (string));
|
write (fd, string, strlen (string));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GLogLevelFlags g_log_msg_prefix = G_LOG_LEVEL_ERROR | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_DEBUG;
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
g_log_msg_prefix_init ()
|
||||||
|
{
|
||||||
|
static gboolean initialized = FALSE;
|
||||||
|
const gchar *val;
|
||||||
|
|
||||||
|
if (!initialized) {
|
||||||
|
|
||||||
|
initialized = TRUE;
|
||||||
|
val = g_getenv ("G_MESSAGES_PREFIXED");
|
||||||
|
|
||||||
|
if (val)
|
||||||
|
{
|
||||||
|
static const GDebugKey keys[] = {
|
||||||
|
{ "error", G_LOG_LEVEL_ERROR },
|
||||||
|
{ "critical", G_LOG_LEVEL_CRITICAL },
|
||||||
|
{ "warning", G_LOG_LEVEL_WARNING },
|
||||||
|
{ "message", G_LOG_LEVEL_MESSAGE },
|
||||||
|
{ "info", G_LOG_LEVEL_INFO },
|
||||||
|
{ "debug", G_LOG_LEVEL_DEBUG }
|
||||||
|
};
|
||||||
|
|
||||||
|
g_log_msg_prefix = g_parse_debug_string (val, keys, G_N_ELEMENTS (keys));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
g_log_write_prefix (GFileDescriptor fd,
|
g_log_write_prefix (GFileDescriptor fd,
|
||||||
GLogLevelFlags mask)
|
GLogLevelFlags mask)
|
||||||
{
|
{
|
||||||
static GLogLevelFlags g_log_msg_prefix = G_LOG_LEVEL_ERROR | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_DEBUG;
|
g_log_msg_prefix_init ();
|
||||||
static gboolean initialized = FALSE;
|
|
||||||
|
|
||||||
g_mutex_lock (g_messages_lock);
|
|
||||||
|
|
||||||
if (!initialized)
|
|
||||||
{
|
|
||||||
const gchar *val;
|
|
||||||
initialized = TRUE;
|
|
||||||
|
|
||||||
val = g_getenv ("G_MESSAGES_PREFIXED");
|
|
||||||
|
|
||||||
if (val)
|
|
||||||
{
|
|
||||||
static const GDebugKey keys[] = {
|
|
||||||
{ "error", G_LOG_LEVEL_ERROR },
|
|
||||||
{ "critical", G_LOG_LEVEL_CRITICAL },
|
|
||||||
{ "warning", G_LOG_LEVEL_WARNING },
|
|
||||||
{ "message", G_LOG_LEVEL_MESSAGE },
|
|
||||||
{ "info", G_LOG_LEVEL_INFO },
|
|
||||||
{ "debug", G_LOG_LEVEL_DEBUG }
|
|
||||||
};
|
|
||||||
|
|
||||||
g_log_msg_prefix = g_parse_debug_string (val, keys, G_N_ELEMENTS (keys));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
g_mutex_unlock (g_messages_lock);
|
|
||||||
|
|
||||||
if ((g_log_msg_prefix & mask) == mask)
|
if ((g_log_msg_prefix & mask) == mask)
|
||||||
{
|
{
|
||||||
@ -504,6 +507,9 @@ g_logv (const gchar *log_domain,
|
|||||||
va_end (args2);
|
va_end (args2);
|
||||||
#endif /* !HAVE_VSNPRINTF */
|
#endif /* !HAVE_VSNPRINTF */
|
||||||
|
|
||||||
|
if (!_g_debug_initialized)
|
||||||
|
_g_debug_init ();
|
||||||
|
|
||||||
for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
|
for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
|
||||||
{
|
{
|
||||||
register GLogLevelFlags test_level;
|
register GLogLevelFlags test_level;
|
||||||
@ -1186,6 +1192,37 @@ g_printf_string_upper_bound (const gchar *format,
|
|||||||
void
|
void
|
||||||
g_messages_init (void)
|
g_messages_init (void)
|
||||||
{
|
{
|
||||||
g_messages_lock = g_mutex_new();
|
g_messages_lock = g_mutex_new ();
|
||||||
g_log_depth = g_private_new(NULL);
|
g_log_depth = g_private_new (NULL);
|
||||||
|
g_log_msg_prefix_init ();
|
||||||
|
_g_debug_init ();
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean _g_debug_initialized = FALSE;
|
||||||
|
guint _g_debug_flags = 0;
|
||||||
|
|
||||||
|
void _g_debug_init ()
|
||||||
|
{
|
||||||
|
const gchar *val;
|
||||||
|
|
||||||
|
_g_debug_initialized = TRUE;
|
||||||
|
|
||||||
|
val = g_getenv ("G_DEBUG");
|
||||||
|
if (val != NULL)
|
||||||
|
{
|
||||||
|
static const GDebugKey keys[] = {
|
||||||
|
{"fatal_warnings", G_DEBUG_FATAL_WARNINGS}
|
||||||
|
};
|
||||||
|
|
||||||
|
_g_debug_flags = g_parse_debug_string (val, keys, G_N_ELEMENTS (keys));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_g_debug_flags & G_DEBUG_FATAL_WARNINGS)
|
||||||
|
{
|
||||||
|
GLogLevelFlags fatal_mask;
|
||||||
|
|
||||||
|
fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
|
||||||
|
fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
|
||||||
|
g_log_set_always_fatal (fatal_mask);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user