diff --git a/src/libvlc-module.c b/src/libvlc-module.c
index 9caaaaa2259c7929dae681dde0ad509ed00f34f7..b35ce06cf178b0cd54541b5ad41cdbf26bb15e76 100644
--- a/src/libvlc-module.c
+++ b/src/libvlc-module.c
@@ -1085,6 +1085,10 @@ static const char* const ppsz_restore_playback_desc[] = {
     "You can select which VoD server module you want to use. Set this " \
     "to 'vod_rtsp' to switch back to the old, legacy module." )
 
+#define TRACER_TEXT N_("Tracer module")
+#define TRACER_LONGTEXT N_( \
+    "This allow to select which tracer module you want to use." )
+
 #define VLM_CONF_TEXT N_("VLM configuration file")
 #define VLM_CONF_LONGTEXT N_( \
     "Read a VLM configuration file as soon as VLM is started." )
@@ -2058,6 +2062,8 @@ vlc_module_begin ()
     set_section( N_("Special modules"), NULL )
     add_module("vod-server", "vod server", NULL,
                VOD_SERVER_TEXT, VOD_SERVER_LONGTEXT)
+    add_module("tracer", "tracer", NULL,
+               TRACER_TEXT, TRACER_LONGTEXT)
 
     set_section( N_("Plugins" ), NULL )
 #ifdef HAVE_DYNAMIC_PLUGINS
diff --git a/src/misc/tracer.c b/src/misc/tracer.c
index 727767815928861a24fb6d826194d40adf13caef..d0d2f088b7d03829546c7af22fcbc51cd918ba50 100644
--- a/src/misc/tracer.c
+++ b/src/misc/tracer.c
@@ -78,11 +78,16 @@ static struct vlc_tracer *vlc_TraceModuleCreate(vlc_object_t *parent)
     if (unlikely(module == NULL))
         return NULL;
 
-    if (vlc_module_load(VLC_OBJECT(module), "tracer", NULL, false,
+    char *module_name = var_InheritString(parent, "tracer");
+    if (vlc_module_load(VLC_OBJECT(module), "tracer", module_name, false,
                         vlc_tracer_load, module) == NULL) {
         vlc_object_delete(VLC_OBJECT(module));
+        if (module_name)
+            free(module_name);
         return NULL;
     }
+    if (module_name)
+        free(module_name);
 
     return &module->tracer;
 }