diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 0453133d7827cdba8540d95fd6108e91f307c892..31981e382c5cad078b20aa1f851216021ff5f422 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1024,11 +1024,14 @@ void GdbEngine::handleQuerySources(const GdbResponse &response)
         GdbMi files = response.data.findChild("files");
         foreach (const GdbMi &item, files.children()) {
             GdbMi fullName = item.findChild("fullname");
+            GdbMi fileName = item.findChild("file");
+            QString file = QString::fromLocal8Bit(fileName.data());
             if (fullName.isValid()) {
                 QString full = cleanupFullName(QString::fromLocal8Bit(fullName.data()));
-                QString fileName = QString::fromLocal8Bit(item.findChild("file").data());
-                m_shortToFullName[fileName] = full;
-                m_fullToShortName[full] = fileName;
+                m_shortToFullName[file] = full;
+                m_fullToShortName[full] = file;
+            } else if (fileName.isValid()) {
+                m_shortToFullName[file] = tr("<unknown>");
             }
         }
         if (m_shortToFullName != oldShortToFull)