diff --git a/src/core/debug/trace.c b/src/core/debug/trace.c
index 157a4d5f34ce26030c651c34c49ba72bd4bac523..cdbe168fc85b09961355a69439a362a8041320ad 100644
--- a/src/core/debug/trace.c
+++ b/src/core/debug/trace.c
@@ -39,6 +39,7 @@
 #include <grpc/support/log.h>
 #include "src/core/support/env.h"
 
+#if GRPC_ENABLE_TRACING
 gpr_uint32 grpc_trace_bits;
 
 static void add(const char *beg, const char *end, char ***ss, size_t *ns) {
@@ -102,4 +103,8 @@ void grpc_init_trace_bits() {
     gpr_free(e);
   }
 }
+#else
+void grpc_init_trace_bits() {
+}
+#endif
 
diff --git a/src/core/debug/trace.h b/src/core/debug/trace.h
index 337e871aaabaee1ea36dd458f98015542eb3113b..167ef3c6ea6b949f3afc355a651c44406f71c82e 100644
--- a/src/core/debug/trace.h
+++ b/src/core/debug/trace.h
@@ -36,6 +36,11 @@
 
 #include <grpc/support/port_platform.h>
 
+/* set to zero to remove all debug trace code */
+#ifndef GRPC_ENABLE_TRACING
+# define GRPC_ENABLE_TRACING 1
+#endif
+
 typedef enum {
   GRPC_TRACE_SURFACE = 1 << 0,
   GRPC_TRACE_CHANNEL = 1 << 1,
@@ -43,7 +48,11 @@ typedef enum {
   GRPC_TRACE_SECURE_ENDPOINT = 1 << 3
 } grpc_trace_bit_value;
 
+#if GRPC_ENABLE_TRACING
 extern gpr_uint32 grpc_trace_bits;
+#else
+# define grpc_trace_bits 0
+#endif
 
 void grpc_init_trace_bits();