[gnome-calendar/gnome-3-24] debug: add debug macros



commit b8a3504f727b03bf541b4ad728d953fcd41c3978
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Mar 16 22:24:19 2017 -0300

    debug: add debug macros

 configure.ac        |   16 ++++++++
 src/Makefile.am     |    1 +
 src/gcal-debug.h.in |   99 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 116 insertions(+), 0 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 9fae593..1afad77 100644
--- a/configure.ac
+++ b/configure.ac
@@ -68,6 +68,20 @@ AC_CHECK_FUNCS([strstr])
 
 GLIB_GSETTINGS
 
+dnl ***********************************************************************
+dnl Setup Tracing Support
+dnl ***********************************************************************
+AC_ARG_ENABLE(tracing,
+              AS_HELP_STRING([--enable-tracing=@<:@no/yes@:>@],
+                             [add extra debugging information @<:@default=no@:>@]),
+              ,
+              enable_tracing=no)
+AS_IF([test "x$enable_tracing" = "xyes"],[enable_debug=yes ENABLE_TRACING=1],[ENABLE_TRACING=0])
+AC_SUBST(ENABLE_TRACING)
+
+BUGREPORT_URL=builder_bugreport_url
+AC_SUBST(BUGREPORT_URL)
+
 dnl ================================================================
 dnl Misc
 dnl ================================================================
@@ -103,6 +117,7 @@ APPSTREAM_XML
 AC_CONFIG_FILES([
       Makefile
       src/Makefile
+      src/gcal-debug.h
       data/Makefile
       data/org.gnome.Calendar.desktop.in
       data/org.gnome.Calendar.search-provider.ini.in
@@ -124,6 +139,7 @@ echo "
         flags:     ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
         flags:     ${WARN_CFLAGS} ${WARN_LDFLAGS}
         flags:     ${CALENDAR_CFLAGS} ${CALENDAR_LIBS} ${LIBS}
+        tracing:   ${enable_tracing}
 
         Now type 'make' to build $PACKAGE
 "
diff --git a/src/Makefile.am b/src/Makefile.am
index 4a0dd31..270e703 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -50,6 +50,7 @@ gnome_calendar_SOURCES =                                  \
     gcal-date-chooser.h                                   \
     gcal-date-selector.c                                  \
     gcal-date-selector.h                                  \
+    gcal-debug.h                                          \
     gcal-edit-dialog.c                                    \
     gcal-edit-dialog.h                                    \
     gcal-event.c                                          \
diff --git a/src/gcal-debug.h.in b/src/gcal-debug.h.in
new file mode 100644
index 0000000..bc2d1eb
--- /dev/null
+++ b/src/gcal-debug.h.in
@@ -0,0 +1,99 @@
+/* gcal-debug.h.in
+ *
+ * Copyright (C) 2017 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GCAL_DEBUG_H
+#define GCAL_DEBUG_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#ifndef GCAL_ENABLE_TRACE
+# define GCAL_ENABLE_TRACE @ENABLE_TRACING@
+#endif
+#if GCAL_ENABLE_TRACE != 1
+# undef GCAL_ENABLE_TRACE
+#endif
+
+/**
+ * GCAL_LOG_LEVEL_TRACE: (skip)
+ */
+#ifndef GCAL_LOG_LEVEL_TRACE
+# define GCAL_LOG_LEVEL_TRACE ((GLogLevelFlags)(1 << G_LOG_LEVEL_USER_SHIFT))
+#endif
+
+#ifdef GCAL_ENABLE_TRACE
+# define GCAL_TRACE_MSG(fmt, ...)                                        \
+   g_log(G_LOG_DOMAIN, GCAL_LOG_LEVEL_TRACE, "  MSG: %s():%d: " fmt,     \
+         G_STRFUNC, __LINE__, ##__VA_ARGS__)
+# define GCAL_PROBE                                                      \
+   g_log(G_LOG_DOMAIN, GCAL_LOG_LEVEL_TRACE, "PROBE: %s():%d",           \
+         G_STRFUNC, __LINE__)
+# define GCAL_TODO(_msg)                                                 \
+   g_log(G_LOG_DOMAIN, GCAL_LOG_LEVEL_TRACE, " TODO: %s():%d: %s",       \
+         G_STRFUNC, __LINE__, _msg)
+# define GCAL_ENTRY                                                      \
+   g_log(G_LOG_DOMAIN, GCAL_LOG_LEVEL_TRACE, "ENTRY: %s():%d",           \
+         G_STRFUNC, __LINE__)
+# define GCAL_EXIT                                                       \
+   G_STMT_START {                                                        \
+      g_log(G_LOG_DOMAIN, GCAL_LOG_LEVEL_TRACE, " EXIT: %s():%d",        \
+            G_STRFUNC, __LINE__);                                        \
+      return;                                                            \
+   } G_STMT_END
+# define GCAL_GOTO(_l)                                                   \
+   G_STMT_START {                                                        \
+      g_log(G_LOG_DOMAIN, GCAL_LOG_LEVEL_TRACE, " GOTO: %s():%d ("#_l")",\
+            G_STRFUNC, __LINE__);                                        \
+      goto _l;                                                           \
+   } G_STMT_END
+# define GCAL_RETURN(_r)                                                 \
+   G_STMT_START {                                                        \
+      g_log(G_LOG_DOMAIN, GCAL_LOG_LEVEL_TRACE, " EXIT: %s():%d ",       \
+            G_STRFUNC, __LINE__);                                        \
+      return _r;                                                         \
+   } G_STMT_END
+#else
+# define GCAL_TODO(_msg)
+# define GCAL_PROBE
+# define GCAL_TRACE_MSG(fmt, ...)
+# define GCAL_ENTRY
+# define GCAL_GOTO(_l)   goto _l
+# define GCAL_EXIT       return
+# define GCAL_RETURN(_r) return _r
+#endif
+
+#define _GCAL_BUG(Component, Description, File, Line, Func, ...)                        \
+  G_STMT_START {                                                                        \
+    g_printerr ("-----------------------------------------------------------------\n"); \
+    g_printerr ("You've found a bug in Calendar or one of its dependent libraries.\n"); \
+    g_printerr ("Please help us help you by filing a bug report at:\n");                \
+    g_printerr ("\n");                                                                  \
+    g_printerr ("@BUGREPORT_URL@&component=%s\n", Component);                           \
+    g_printerr ("\n");                                                                  \
+    g_printerr ("%s:%d in function %s()\n", File, Line, Func);                          \
+    g_printerr ("\n");                                                                  \
+    g_printerr (Description"\n", ##__VA_ARGS__);                                        \
+    g_printerr ("-----------------------------------------------------------------\n"); \
+  } G_STMT_END
+#define GCAL_BUG(Component, Description, ...) \
+  _GCAL_BUG(Component, Description, __FILE__, __LINE__, G_STRFUNC, ##__VA_ARGS__)
+
+G_END_DECLS
+
+#endif /* GCAL_DEBUG_H */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]