diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 6fd697fcc3b1b2e9e3a9bf27d19b75def210b739..506f2379a80f27312775572d0baec986f0d6ebdf 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -160,6 +160,7 @@ lldb.SBType.__str__ = lldb.SBType.GetName
 class Dumper(DumperBase):
     def __init__(self):
         DumperBase.__init__(self)
+        lldb.theDumper = self
 
         self.outputLock = threading.Lock()
         self.debugger = lldb.SBDebugger.Create()
@@ -1489,6 +1490,21 @@ class Dumper(DumperBase):
             bp.SetIgnoreCount(int(args["ignorecount"]))
             bp.SetCondition(self.hexdecode(args["condition"]))
             bp.SetEnabled(bool(args["enabled"]))
+            bp.SetScriptCallbackBody('\n'.join([
+                "def foo(frame = frame, bp_loc = bp_loc, dict = internal_dict):",
+                "  " + self.hexdecode(args["command"]).replace('\n', '\n  '),
+                "from cStringIO import StringIO",
+                "origout = sys.stdout",
+                "sys.stdout = StringIO()",
+                "result = foo()",
+                "d = lldb.theDumper",
+                "output = d.hexencode(sys.stdout.getvalue())",
+                "sys.stdout = origout",
+                "d.report('output={channel=\"stderr\",data=\"' + output + '\"}')",
+                "if result is False:",
+                "  d.reportState('continueafternextstop')",
+                "return True"
+            ]))
             if isinstance(bp, lldb.SBBreakpoint):
                 bp.SetOneShot(bool(args["oneshot"]))
         self.reportResult(self.describeBreakpoint(bp) + extra, args)
diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index f49bbf688126f8fa296788f1d65acc8bb763fedb..207cddbf27f3ad5a738584e5932e43fe7b917e66 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -733,6 +733,7 @@ PROPERTY(QString, functionName, setFunctionName)
 PROPERTY(BreakpointType, type, setType)
 PROPERTY(int, threadSpec, setThreadSpec)
 PROPERTY(QByteArray, condition, setCondition)
+PROPERTY(QString, command, setCommand)
 PROPERTY(quint64, address, setAddress)
 PROPERTY(QString, expression, setExpression)
 PROPERTY(QString, message, setMessage)
@@ -757,6 +758,7 @@ void Breakpoint::addToCommand(DebuggerCommand *cmd) const
     cmd->arg("type", type());
     cmd->arg("ignorecount", ignoreCount());
     cmd->arg("condition", condition().toHex());
+    cmd->arg("command", command().toUtf8().toHex());
     cmd->arg("function", functionName().toUtf8());
     cmd->arg("oneshot", isOneShot());
     cmd->arg("enabled", isEnabled());
diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h
index 763db17ce581b8ee2e515c73f5a9463eba22b0a4..150cfd43753a57508bba707a6b230fed66f1df87 100644
--- a/src/plugins/debugger/breakhandler.h
+++ b/src/plugins/debugger/breakhandler.h
@@ -113,6 +113,8 @@ public:
     QString expression() const;
     void setExpression(const QString &expression);
     QString message() const;
+    QString command() const;
+    void setCommand(const QString &command);
     void setMessage(const QString &m);
     BreakpointType type() const;
     void setType(const BreakpointType &type);
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index 196972a0138ff5f3b2c0dce9a8d16e3fefab9607..03c627e14db4a4b32365b8db2429e8d22b5bec03 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -895,6 +895,8 @@ void LldbEngine::handleStateNotification(const GdbMi &reportedState)
         notifyInferiorRunOk();
     else if (newState == "inferiorrunfailed")
         notifyInferiorRunFailed();
+    else if (newState == "continueafternextstop")
+        m_continueAtNextSpontaneousStop = true;
     else if (newState == "stopped") {
         notifyInferiorSpontaneousStop();
         if (m_continueAtNextSpontaneousStop) {