diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index ec3be58e405b6d3764ca68f8951d62cd8d919aad..971a602741bb0c29e91ea591606f1994e71d1107 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -1200,6 +1200,7 @@ void TrkGdbAdapter::handleReadMemoryUnbuffered(const TrkResult &result)
 
 void TrkGdbAdapter::handleStepInto(const TrkResult &result)
 {
+    m_snapshot.reset();
     if (result.errorCode()) {
         logMessage("ERROR: " + result.errorString() + " in handleStepInto");
         // Try fallback with Step Over
@@ -1225,6 +1226,7 @@ void TrkGdbAdapter::handleStepInto2(const TrkResult &result)
 
 void TrkGdbAdapter::handleStepOver(const TrkResult &result)
 {
+    m_snapshot.reset();
     if (result.errorCode()) {
         logMessage("ERROR: " + result.errorString() + "in handleStepOver");
         // Try fallback with Step Into
diff --git a/src/shared/trk/trkutils.cpp b/src/shared/trk/trkutils.cpp
index a45084bb8cddd881ff8133cbe83595f8551d7046..e40944a66cff3f7c23647ad8816b33d1513bd7e1 100644
--- a/src/shared/trk/trkutils.cpp
+++ b/src/shared/trk/trkutils.cpp
@@ -362,5 +362,12 @@ QString TrkResult::errorString() const
     return errorMessage(data.at(0));
 }
 
+void Snapshot::reset()
+{
+    memory.clear();
+    for (int i = 0; i < RegisterCount; ++i)
+        registers[i] = 0;
+}
+
 } // namespace trk
 
diff --git a/src/shared/trk/trkutils.h b/src/shared/trk/trkutils.h
index 6f1b280eb85b4d23e1eaca53655ea314ac14a2f8..3bc2ed8de73def510fbf84279c1f344d65f9dfe0 100644
--- a/src/shared/trk/trkutils.h
+++ b/src/shared/trk/trkutils.h
@@ -153,6 +153,8 @@ struct Session
 
 struct Snapshot
 {
+    void reset();
+
     uint registers[RegisterCount];
     typedef QHash<uint, QByteArray> Memory;
     Memory memory;