diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index c6bf0494bd1c7d514bb8979e706324b3219b9c10..f9878aa29427a7d9280969db94e86a858c397704 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -1113,8 +1113,11 @@ void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
     const unsigned engineCapabilities = d->m_engine->debuggerCapabilities();
     theDebuggerAction(OperateByInstruction)
         ->setEnabled(engineCapabilities & DisassemblerCapability);
-    d->m_actions.reverseDirectionAction
-        ->setEnabled(engineCapabilities & ReverseSteppingCapability);
+
+    const bool canReverse = (engineCapabilities & ReverseSteppingCapability)
+                && theDebuggerBoolSetting(EnableReverseDebugging);
+    d->m_actions.reverseDirectionAction->setChecked(false);
+    d->m_actions.reverseDirectionAction->setEnabled(canReverse);
 }
 
 void DebuggerManager::startFailed()
@@ -1136,6 +1139,7 @@ void DebuggerManager::cleanupViews()
     d->m_sourceFilesWindow->removeAll();
     d->m_disassemblerViewAgent.cleanup();
     d->m_actions.reverseDirectionAction->setChecked(false);
+    d->m_actions.reverseDirectionAction->setEnabled(false);
 
     // FIXME: Move to plugin?
     using namespace Core;
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 530eca53e4e36af8a2136aff1b837421b90ed37c..914d5f90448cd48b86aeaef8289c0157e74a6643 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1506,8 +1506,8 @@ void DebuggerPlugin::enableReverseDebuggingTriggered(const QVariant &value)
 {
     QTC_ASSERT(m_reverseToolButton, return);
     m_reverseToolButton->setVisible(value.toBool());
-    if (!value.toBool())
-        m_manager->debuggerManagerActions().reverseDirectionAction->setChecked(false);
+    m_manager->debuggerManagerActions().reverseDirectionAction->setChecked(false);
+    m_manager->debuggerManagerActions().reverseDirectionAction->setEnabled(value.toBool());
 }
 
 void DebuggerPlugin::toggleBreakpoint()