diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h
index ec79f488631a7ff24463fd4ce0bf5b149f191822..3f734bd16681cfd2e117c1e45505cabc180e5413 100644
--- a/src/plugins/debugger/debuggerconstants.h
+++ b/src/plugins/debugger/debuggerconstants.h
@@ -84,6 +84,7 @@ namespace Internal {
 
 const char * const OPENED_BY_DEBUGGER         = "OpenedByDebugger";
 const char * const OPENED_WITH_DISASSEMBLY    = "DisassemblerView";
+const char * const OPENED_WITH_MEMORY         = "MemoryView";
 
 const char * const DEBUGMODE            = "Debugger.DebugMode";
 const char * const DEBUG                = "Debugger.Debug";
diff --git a/src/plugins/debugger/debuggercore.h b/src/plugins/debugger/debuggercore.h
index 95820d89912cedd741baf4f7aa42688bc3d9fd87..0fa30f388e491d15603cb23c7817e08369b65989 100644
--- a/src/plugins/debugger/debuggercore.h
+++ b/src/plugins/debugger/debuggercore.h
@@ -114,6 +114,7 @@ public:
     virtual void showModuleSymbols(const QString &moduleName,
         const QVector<Symbol> &symbols) = 0;
     virtual void openMemoryEditor() = 0;
+    virtual void updateMemoryEditors() = 0;
     virtual void languagesChanged() = 0;
 
     virtual Utils::SavedAction *action(int code) const = 0;
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 8980634d1de187f71028d6cfb002f163315b4a68..9063dd02ce3b460acbe2777e61f1a68929750262 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1027,6 +1027,7 @@ public slots:
     void languagesChanged();
     void showStatusMessage(const QString &msg, int timeout = -1);
     void openMemoryEditor();
+    void updateMemoryEditors();
 
     const CPlusPlus::Snapshot &cppCodeModelSnapshot() const;
 
@@ -2433,6 +2434,16 @@ void DebuggerPluginPrivate::openMemoryEditor()
         currentEngine()->openMemoryView(dialog.address());
 }
 
+void DebuggerPluginPrivate::updateMemoryEditors()
+{
+    EditorManager *editorManager = EditorManager::instance();
+    QTC_ASSERT(editorManager, return);
+    foreach (IEditor *editor, editorManager->openedEditors()) {
+        if (editor->property(Constants::OPENED_WITH_MEMORY).toBool())
+            QMetaObject::invokeMethod(editor->widget(), "updateContents");
+    }
+}
+
 void DebuggerPluginPrivate::coreShutdown()
 {
     m_shuttingDown = true;
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 1e6e1691fb2920f737abe46288d28509c069ddc8..63c858a8b54e03f6576f02833918cf8c0da785c2 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -3530,6 +3530,7 @@ void GdbEngine::updateLocals(const QVariant &cookie)
         updateLocalsPython(false, QByteArray());
     else
         updateLocalsClassic(cookie);
+    debuggerCore()->updateMemoryEditors();
 }
 
 
diff --git a/src/plugins/debugger/memoryagent.cpp b/src/plugins/debugger/memoryagent.cpp
index 139fe3879dd04d76e27d4fbc9927aa82e701c2a3..8577357b970f37578eb6a2f5527b2880667bb4c9 100644
--- a/src/plugins/debugger/memoryagent.cpp
+++ b/src/plugins/debugger/memoryagent.cpp
@@ -87,6 +87,8 @@ void MemoryViewAgent::createBinEditor(quint64 addr)
         Core::Constants::K_DEFAULT_BINARY_EDITOR_ID,
         &titlePattern);
     if (editor) {
+        editor->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true);
+        editor->setProperty(Debugger::Constants::OPENED_WITH_MEMORY, true);
         connect(editor->widget(),
             SIGNAL(lazyDataRequested(Core::IEditor *, quint64,bool)),
             SLOT(fetchLazyData(Core::IEditor *, quint64,bool)));
@@ -103,7 +105,6 @@ void MemoryViewAgent::createBinEditor(quint64 addr)
             SIGNAL(endOfFileRequested(Core::IEditor *)),
             SLOT(handleEndOfFileRequested(Core::IEditor*)));
         m_editors << editor;
-        editorManager->activateEditor(editor);
         QMetaObject::invokeMethod(editor->widget(), "setNewWindowRequestAllowed");
         QMetaObject::invokeMethod(editor->widget(), "setLazyData",
             Q_ARG(quint64, addr), Q_ARG(int, DataRange), Q_ARG(int, BinBlockSize));
diff --git a/tests/manual/gdbdebugger/simple/simple_gdbtest_app.cpp b/tests/manual/gdbdebugger/simple/simple_gdbtest_app.cpp
index c22c5e943e14b5bedf48c73de27dc078d731dd76..a4b5ba91e91caf8e55654af46f74c54f5728e477 100644
--- a/tests/manual/gdbdebugger/simple/simple_gdbtest_app.cpp
+++ b/tests/manual/gdbdebugger/simple/simple_gdbtest_app.cpp
@@ -1859,6 +1859,13 @@ public:
     Foo *f;
 };
 
+void testMemoryView()
+{
+    int a[20];
+    for (int i = 0; i != 20; ++i)
+        a[i] = i;
+}
+
 void testUninitialized()
 {
     QString s;
@@ -2111,6 +2118,7 @@ void testQSettings()
 
 int main(int argc, char *argv[])
 {
+    testMemoryView();
     //testQSettings();
     //testWCout0();
     //testWCout();