Issue #10492: bdb.Bdb.run() only traces the execution of the code

And not the compilation (if the input is a string).
diff --git a/Lib/bdb.py b/Lib/bdb.py
index 9f5e7ae..f711004 100644
--- a/Lib/bdb.py
+++ b/Lib/bdb.py
@@ -385,6 +385,8 @@
         if locals is None:
             locals = globals
         self.reset()
+        if isinstance(cmd, str):
+            cmd = compile(cmd, "<string>", "exec")
         sys.settrace(self.trace_dispatch)
         try:
             exec(cmd, globals, locals)
diff --git a/Misc/NEWS b/Misc/NEWS
index cd55adb..3cd9257 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -30,6 +30,9 @@
 Library
 -------
 
+- Issue #10492: bdb.Bdb.run() only traces the execution of the code, not the
+  compilation (if the input is a string).
+
 - Issue #7995: When calling accept() on a socket with a timeout, the returned
   socket is now always blocking, regardless of the operating system.