diff --git a/tools/llvm-db/CLIDebugger.cpp b/tools/llvm-db/CLIDebugger.cpp
index 2b3937a..c48a919 100644
--- a/tools/llvm-db/CLIDebugger.cpp
+++ b/tools/llvm-db/CLIDebugger.cpp
@@ -43,9 +43,9 @@
     &CLIDebugger::fileCommand));
 
   addCommand("create", new BuiltinCLICommand(
-    "Start the current program, stopping execution in main",
+    "Start the program, halting its execution in main",
     "This command creates an instance of the current program, but stops"
-    " execution immediately.",
+    "\nexecution immediately.\n",
     &CLIDebugger::createCommand));
 
   addCommand("kill", new BuiltinCLICommand(
@@ -186,7 +186,7 @@
     CommandTable.lower_bound(Command);
       
   if (Command == "") {
-    throw "Null command not implemented yet.";
+    throw "Null command should not get here!";
   } else if (CI == CommandTable.end() ||
              !isValidPrefix(Command, CI->first)) {
     // If this command has no relation to anything in the command table,
@@ -225,6 +225,11 @@
   std::string Command;
   std::cout << Prompt;
 
+  // Keep track of the last command issued, so that we can reissue it if the
+  // user hits enter as the command.
+  CLICommand *LastCommand = 0;
+  std::string LastArgs;
+
   // Continue reading commands until the end of file.
   while (getline(std::cin, Command)) {
     std::string Arguments = Command;
@@ -233,8 +238,23 @@
     Command = getToken(Arguments, " \t\n\v\f\r\\/;.*&");
 
     try {
-      // Look up the command and execute it.
-      getCommand(Command)->runCommand(*this, Arguments);      
+      CLICommand *CurCommand;
+      
+      if (Command == "") {
+        CurCommand = LastCommand;
+        Arguments = LastArgs;
+      } else {
+        CurCommand = getCommand(Command);
+      }
+
+      // Save the command we are running in case the user wants us to repeat it
+      // next time.
+      LastCommand = CurCommand;
+      LastArgs = Arguments;
+
+      // Finally, execute the command.
+      if (CurCommand)
+        CurCommand->runCommand(*this, Arguments);      
 
     } catch (int RetVal) {
       // The quit command exits the command loop by throwing an integer return
