diff --git a/src/plugins/debugger/cdb/cdbdebugengine.cpp b/src/plugins/debugger/cdb/cdbdebugengine.cpp
index c1e7a01534db6e81d6f81bda1980e9d922d55179..ec12862315eef261517152f033e7728f7dc50455 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine.cpp
+++ b/src/plugins/debugger/cdb/cdbdebugengine.cpp
@@ -376,13 +376,12 @@ void CdbDebugEngine::startupChecks()
 
 void CdbDebugEngine::startDebugger()
 {
-    setState(EngineStarting, Q_FUNC_INFO, __LINE__);
+    QTC_ASSERT(state() == EngineStarting, qDebug() << state());
     const DebuggerStartParameters &sp = startParameters();
     if (debugCDBExecution)
         qDebug() << "startDebugger";
     CdbCore::BreakPoint::clearNormalizeFileNameCache();
     startupChecks();
-    setState(AdapterStarting, Q_FUNC_INFO, __LINE__);
     m_d->checkVersion();
     if (m_d->m_hDebuggeeProcess) {
         warning(QLatin1String("Internal error: Attempt to start debugger while another process is being debugged."));
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 3c9c6272a1740ba9d316c1b1f7b25c491562fc67..c89a03d751b1f1f5339c1c574996593184799caa 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -635,6 +635,7 @@ void DebuggerEngine::startDebugger(DebuggerRunControl *runControl)
     theDebuggerAction(OperateByInstruction)
         ->setEnabled(engineCapabilities & DisassemblerCapability);
 
+    setState(EngineStarting);
     startDebugger();
 }
 
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 630da40a287fb94a718badc15e7f69d78457aeba..ba6b663c2bee4ea5732f5c67812113d8efc7e6d8 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1762,8 +1762,7 @@ AbstractGdbAdapter *GdbEngine::createAdapter()
 void GdbEngine::startDebugger()
 {
     //qDebug() << "GDB START DEBUGGER";
-    QTC_ASSERT(state() == DebuggerNotReady, setState(DebuggerNotReady));
-    setState(EngineStarting);
+    QTC_ASSERT(state() == EngineStarting, qDebug() << state());
     QTC_ASSERT(m_debuggingHelperState == DebuggingHelperUninitialized, /**/);
     QTC_ASSERT(m_gdbAdapter == 0, /**/);
 
diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp
index 36d2edd474b24fd87dc4cae415b43750802ab0f8..a42ba43ec9f88974fa6a5645813f58d9c4df4f65 100644
--- a/src/plugins/debugger/pdb/pdbengine.cpp
+++ b/src/plugins/debugger/pdb/pdbengine.cpp
@@ -140,7 +140,7 @@ void PdbEngine::exitDebugger()
 
 void PdbEngine::startDebugger()
 {
-    setState(EngineStarting);
+    QTC_ASSERT(state() == EngineStarting, qDebug() << state());
 
     m_scriptFileName = QFileInfo(startParameters().executable).absoluteFilePath();
     QFile scriptFile(m_scriptFileName);
diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index 11d6c6c545f00ff4c75f97171882a72d774edf02..5a4ff1408f07bf7fdc0a423d2fe05803c8cd1584 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -228,8 +228,7 @@ const int serverPort = 3768;
 
 void QmlEngine::startDebugger()
 {
-    QTC_ASSERT(state() == DebuggerNotReady, setState(DebuggerNotReady));
-    setState(EngineStarting);
+    QTC_ASSERT(state() == EngineStarting, qDebug() << state());
     const DebuggerStartParameters &sp = startParameters();
     const int pos = sp.remoteChannel.indexOf(QLatin1Char(':'));
     const QString host = sp.remoteChannel.left(pos);
diff --git a/src/plugins/debugger/script/scriptengine.cpp b/src/plugins/debugger/script/scriptengine.cpp
index 6309e2aefcd336e71e620054abbc40dc3919b26f..c2ccecf7b8dca2eb158565a46c85e8e688934ce2 100644
--- a/src/plugins/debugger/script/scriptengine.cpp
+++ b/src/plugins/debugger/script/scriptengine.cpp
@@ -231,9 +231,8 @@ void ScriptEngine::exitDebugger()
 
 void ScriptEngine::startDebugger()
 {
+    QTC_ASSERT(state() == EngineStarting, qDebug() << state());
     showMessage(_("STARTING SCRIPT DEBUGGER"), LogMisc);
-    QTC_ASSERT(state() == DebuggerNotReady, setState(DebuggerNotReady));
-    setState(EngineStarting);
     if (m_scriptEngine.isNull())
         m_scriptEngine = Core::ICore::instance()->scriptManager()->scriptEngine();
     if (!m_scriptAgent)
diff --git a/src/plugins/debugger/tcf/tcfengine.cpp b/src/plugins/debugger/tcf/tcfengine.cpp
index b9ed4c9b207e69d575d6ddfc1795217b2ffe63aa..fdfe8f2f1d428656d94cc96d5d035fdb5be25670 100644
--- a/src/plugins/debugger/tcf/tcfengine.cpp
+++ b/src/plugins/debugger/tcf/tcfengine.cpp
@@ -202,6 +202,7 @@ void TcfEngine::exitDebugger()
 
 void TcfEngine::startDebugger()
 {
+    QTC_ASSERT(state() == EngineStarting, qDebug() << state());
     setState(InferiorRunningRequested);
     showStatusMessage(tr("Running requested..."), 5000);
     const DebuggerStartParameters &sp = startParameters();