diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 133b20fe2b9df5d08fa62862617b1b14cff47ca7..2fdde0ac2a1561e7fabd5e8a597604ad5a540f3b 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -2312,8 +2312,7 @@ void GdbEngine::handleStackListFrames(const GdbResponse &response)
         #endif
 
         // Initialize top frame to the first valid frame.
-        // FIXME: Check for QFile(frame.fullname).isReadable()?
-        const bool isValid = !frame.file.isEmpty() && !frame.function.isEmpty();
+        const bool isValid = frame.isUsable() && !frame.function.isEmpty();
         if (isValid && targetFrame == -1)
             targetFrame = i;
     }
diff --git a/src/plugins/debugger/stackhandler.cpp b/src/plugins/debugger/stackhandler.cpp
index fa6b972e555d87356cb49a015875f7988c48923a..d2b146b91349b1a4613781b033965f0ba183343a 100644
--- a/src/plugins/debugger/stackhandler.cpp
+++ b/src/plugins/debugger/stackhandler.cpp
@@ -203,7 +203,7 @@ Qt::ItemFlags StackHandler::flags(const QModelIndex &index) const
     if (index.row() == m_stackFrames.size())
         return QAbstractTableModel::flags(index);
     const StackFrame &frame = m_stackFrames.at(index.row());
-    const bool isValid = (!frame.file.isEmpty() && !frame.function.isEmpty())
+    const bool isValid = (frame.isUsable() && !frame.function.isEmpty())
         || theDebuggerBoolSetting(OperateByInstruction);
     return isValid ? QAbstractTableModel::flags(index) : Qt::ItemFlags(0);
 }