diff --git a/glib/glib_probes.d b/glib/glib_probes.d
index 8f4cb91..ac955e8 100644
--- a/glib/glib_probes.d
+++ b/glib/glib_probes.d
@@ -7,4 +7,6 @@ provider glib {
 	probe quark__new(char *, unsigned int);
 	probe main__before_dispatch (char *);
         probe main__after_dispatch (char *);
+        probe main__source_attach(char*);
+        probe main__source_destroy(char*);
 };
diff --git a/glib/gmain.c b/glib/gmain.c
index 2220c76..10a06ba 100644
--- a/glib/gmain.c
+++ b/glib/gmain.c
@@ -1165,6 +1165,8 @@ g_source_attach (GSource      *source,
   g_return_val_if_fail (source->context == NULL, 0);
   g_return_val_if_fail (!SOURCE_DESTROYED (source), 0);
   
+  TRACE (GLIB_MAIN_SOURCE_ATTACH (g_source_get_name (source)));
+
   if (!context)
     context = g_main_context_default ();
 
@@ -1188,6 +1190,8 @@ g_source_destroy_internal (GSource      *source,
 			   GMainContext *context,
 			   gboolean      have_lock)
 {
+  TRACE (GLIB_MAIN_SOURCE_DESTROY (g_source_get_name (source)));
+
   if (!have_lock)
     LOCK_CONTEXT (context);
   
