diff --git a/src/plugins/debugger/qml/qmlinspectoragent.cpp b/src/plugins/debugger/qml/qmlinspectoragent.cpp
index 64bd8cb089348a4b8fcde915dcbc4b2e74bb6f27..70d48f5b867975dd22ac18e41b460123863055d5 100644
--- a/src/plugins/debugger/qml/qmlinspectoragent.cpp
+++ b/src/plugins/debugger/qml/qmlinspectoragent.cpp
@@ -738,6 +738,7 @@ void QmlInspectorAgent::addWatchData(const ObjectReference &obj,
                                      bool append)
 {
     qCDebug(qmlInspectorLog) << '(' << obj << parentIname << ')';
+    QTC_ASSERT(m_debuggerEngine, return);
 
     int objDebugId = obj.debugId();
     QByteArray objIname = buildIName(parentIname, objDebugId);
@@ -831,7 +832,8 @@ bool QmlInspectorAgent::isConnected() const
 
 void QmlInspectorAgent::clearObjectTree()
 {
-    m_debuggerEngine->watchHandler()->removeAllData(true);
+    if (m_debuggerEngine)
+        m_debuggerEngine->watchHandler()->removeAllData(true);
     m_objectTreeQueryIds.clear();
     m_fetchDataIds.clear();
     int old_count = m_debugIdHash.count();
diff --git a/src/plugins/debugger/qml/qmlinspectoragent.h b/src/plugins/debugger/qml/qmlinspectoragent.h
index 4719ed2782abfa8d01284d3c497da9ae5cab9338..979a9d356308f8ce1cfdd0791f1262710c3ad3b8 100644
--- a/src/plugins/debugger/qml/qmlinspectoragent.h
+++ b/src/plugins/debugger/qml/qmlinspectoragent.h
@@ -32,6 +32,7 @@
 #define QMLINSPECTORAGENT_H
 
 #include <QStack>
+#include <QPointer>
 #include <QTimer>
 
 #include <qmldebug/baseenginedebugclient.h>
@@ -126,7 +127,7 @@ private:
     void clearObjectTree();
 
 private:
-    DebuggerEngine *m_debuggerEngine;
+    QPointer<DebuggerEngine> m_debuggerEngine;
     QmlDebug::BaseEngineDebugClient *m_engineClient;
 
     quint32 m_engineQueryId;