diff --git a/py/bc.c b/py/bc.c
index 522eb0aeb0783e3088bc0cbee8058c4ab2d2be1e..917eba57d9c2b5a1aa134ff3e8a42cff3da4f130 100644
--- a/py/bc.c
+++ b/py/bc.c
@@ -35,7 +35,7 @@
 #include "py/bc0.h"
 #include "py/bc.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #else // don't print debugging info
 #define DEBUG_PRINT (0)
diff --git a/py/builtinimport.c b/py/builtinimport.c
index e0ce91d9be429f9aadcae43924fa5ad95ccd9f51..f5bfb0d982f95ff4b8910d3d33fa80d0c3529f54 100644
--- a/py/builtinimport.c
+++ b/py/builtinimport.c
@@ -37,7 +37,7 @@
 #include "py/builtin.h"
 #include "py/frozenmod.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #define DEBUG_printf DEBUG_printf
 #else // don't print debugging info
diff --git a/py/emitglue.c b/py/emitglue.c
index 383e6a136b83e9d0936fbf7cfd62ef02ebc95b11..d2add988f22ab1164338cfc6ee9c19fbe34f18cd 100644
--- a/py/emitglue.c
+++ b/py/emitglue.c
@@ -35,7 +35,7 @@
 #include "py/runtime0.h"
 #include "py/bc.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #define WRITE_CODE (1)
 #define DEBUG_printf DEBUG_printf
diff --git a/py/emitnative.c b/py/emitnative.c
index 7ce61962540d8cfc983fe31d9bba9193fbc201a7..4608cd1e0cdf9af6bbdbdbaa53e2651c2932995e 100644
--- a/py/emitnative.c
+++ b/py/emitnative.c
@@ -50,7 +50,7 @@
 #include "py/emit.h"
 #include "py/bc.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #define DEBUG_printf DEBUG_printf
 #else // don't print debugging info
diff --git a/py/gc.c b/py/gc.c
index 7253b7db6830e45883fdd92d23a6a857dba46a71..3a505e9c78389d19fae5291dc7bb90b70d1a6e5a 100644
--- a/py/gc.c
+++ b/py/gc.c
@@ -35,7 +35,7 @@
 
 #if MICROPY_ENABLE_GC
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #define DEBUG_printf DEBUG_printf
 #else // don't print debugging info
diff --git a/py/malloc.c b/py/malloc.c
index e679e20926e64791eda0b3b089a353f5c6bf1612..af4ccf2e81cad126210d3015ffa19e865bcd1965 100644
--- a/py/malloc.c
+++ b/py/malloc.c
@@ -32,7 +32,7 @@
 #include "py/misc.h"
 #include "py/mpstate.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_printf DEBUG_printf
 #else // don't print debugging info
 #define DEBUG_printf(...) (void)0
diff --git a/py/modthread.c b/py/modthread.c
index 1d76027893a4cb1bc812799784610637e7521bda..bf74128e81621b3af0b453e5ad1c8f3039d54b11 100644
--- a/py/modthread.c
+++ b/py/modthread.c
@@ -34,7 +34,7 @@
 
 #include "py/mpthread.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #define DEBUG_printf DEBUG_printf
 #else // don't print debugging info
diff --git a/py/mpconfig.h b/py/mpconfig.h
index 0e76a1ff5e74b13f292764f774d2bea6a07269a8..dac8a903c94aaafe525185985685ec8a5425d8fb 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -373,6 +373,11 @@
 #define MICROPY_DEBUG_PRINTERS (0)
 #endif
 
+// Whether to enable all debugging outputs (it will be extremely verbose)
+#ifndef MICROPY_DEBUG_VERBOSE
+#define MICROPY_DEBUG_VERBOSE (0)
+#endif
+
 /*****************************************************************************/
 /* Optimisations                                                             */
 
diff --git a/py/nativeglue.c b/py/nativeglue.c
index 46c6906d96bb59cda67fbdca809a34905c953de2..e954234c2708a1f220fc7d25954ea800a539fb1f 100644
--- a/py/nativeglue.c
+++ b/py/nativeglue.c
@@ -34,7 +34,7 @@
 #include "py/emitglue.h"
 #include "py/bc.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_printf DEBUG_printf
 #else // don't print debugging info
 #define DEBUG_printf(...) (void)0
diff --git a/py/objfun.c b/py/objfun.c
index eaba1312935702ff602d46fb82baece9b0b474e8..5606511d8a2615760a58b7c28edb1fafb2403466 100644
--- a/py/objfun.c
+++ b/py/objfun.c
@@ -36,7 +36,7 @@
 #include "py/bc.h"
 #include "py/stackctrl.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #else // don't print debugging info
 #define DEBUG_PRINT (0)
diff --git a/py/objtype.c b/py/objtype.c
index 87c0cc9e5c1b6fd3d062b213f5c5189a2e6866d0..e1a24da7e72c6d344d02be1e7aea03e0cb574c53 100644
--- a/py/objtype.c
+++ b/py/objtype.c
@@ -35,7 +35,7 @@
 #include "py/runtime0.h"
 #include "py/runtime.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #define DEBUG_printf DEBUG_printf
 #else // don't print debugging info
diff --git a/py/qstr.c b/py/qstr.c
index fdb38f1dec4b3675bccd5340609b1a91173d2ddb..95c9b6835efdb095c7bac9ea0a0c1753d99a71f0 100644
--- a/py/qstr.c
+++ b/py/qstr.c
@@ -36,7 +36,7 @@
 // ultimately we will replace this with a static hash table of some kind
 // also probably need to include the length in the string data, to allow null bytes in the string
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_printf DEBUG_printf
 #else // don't print debugging info
 #define DEBUG_printf(...) (void)0
diff --git a/py/runtime.c b/py/runtime.c
index 9c3edeb9c805b7365985e9c8ec8cad591864b4a2..eb1298813f303ddc5d7919250411c37d496d4a39 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -44,7 +44,7 @@
 #include "py/stackctrl.h"
 #include "py/gc.h"
 
-#if 0 // print debugging info
+#if MICROPY_DEBUG_VERBOSE // print debugging info
 #define DEBUG_PRINT (1)
 #define DEBUG_printf DEBUG_printf
 #define DEBUG_OP_printf(...) DEBUG_printf(__VA_ARGS__)