diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 8ba7d7d6cd8c9a84896a6b6b28f6bc74efff554a..605e3a9a3c3513a5223f246d71ba24818e2774b7 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -489,12 +489,13 @@ void GdbEngine::handleResponse(const QByteArray &buff)
             }
 
             // Show some messages to give the impression something happens.
-            if (data.startsWith("Reading symbols from "))
+            if (data.startsWith("Reading symbols from ")) {
                 showStatusMessage(tr("Reading %1...").arg(_(data.mid(21))), 1000);
-            if (data.endsWith('\n'))
-                data.chop(1);
-            if (data.startsWith("[New ") || data.startsWith("[Thread "))
+            } else if (data.startsWith("[New ") || data.startsWith("[Thread ")) {
+                if (data.endsWith('\n'))
+                    data.chop(1);
                 showStatusMessage(_(data), 1000);
+            }
             break;
         }
 
@@ -875,13 +876,15 @@ void GdbEngine::handleQuerySources(const GdbResponse &response)
         foreach (const GdbMi &item, files.children()) {
             QString fileName = QString::fromLocal8Bit(item.findChild("file").data());
             GdbMi fullName = item.findChild("fullname");
-            QString full = QString::fromLocal8Bit(fullName.data());
-            #ifdef Q_OS_WIN
-            full = QDir::cleanPath(full);
-            #endif
-            if (fullName.isValid() && QFileInfo(full).isReadable()) {
-                m_shortToFullName[fileName] = full;
-                m_fullToShortName[full] = fileName;
+            if (fullName.isValid()) {
+                QString full = QString::fromLocal8Bit(fullName.data());
+                if (QFileInfo(full).isReadable()) {
+                    #ifdef Q_OS_WIN
+                    full = QDir::cleanPath(full);
+                    #endif
+                    m_shortToFullName[fileName] = full;
+                    m_fullToShortName[full] = fileName;
+                }
             }
         }
         if (m_shortToFullName != oldShortToFull)
@@ -1150,12 +1153,11 @@ void GdbEngine::handleStop1(const GdbResponse &response)
 
 void GdbEngine::handleStop1(const GdbMi &data)
 {
-    QByteArray reason = data.findChild("reason").data();
     if (m_modulesListOutdated) {
         reloadModules();
         m_modulesListOutdated = false;
     }
-    // Need another round trip
+    QByteArray reason = data.findChild("reason").data();
     if (reason == "breakpoint-hit") {
         showStatusMessage(tr("Stopped at breakpoint."));
         GdbMi frame = data.findChild("frame");
@@ -4064,14 +4066,14 @@ QString GdbEngine::parseDisassembler(const GdbMi &lines)
     foreach (const GdbMi &child, lines.children()) {
         if (child.hasName("src_and_asm_line")) {
             // mixed mode
-            int line = child.findChild("line").data().toInt();
-            QString fileName = QFile::decodeName(child.findChild("file").data());
             if (!fileLoaded) {
+                QString fileName = QFile::decodeName(child.findChild("file").data());
                 QFile file(fullName(fileName));
                 file.open(QIODevice::ReadOnly);
                 fileContents = file.readAll().split('\n');
                 fileLoaded = true;
             }
+            int line = child.findChild("line").data().toInt();
             if (line >= 0 && line < fileContents.size())
                 ba += "    " + fileContents.at(line) + '\n';
             GdbMi insn = child.findChild("line_asm_insn");