diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp
index 59c3adb04619ff4473c5e0d0e133a12c8fffbc96..ae30219d9f25b4ad1edd2812d1187117561e8232 100644
--- a/src/plugins/debugger/debuggeritemmanager.cpp
+++ b/src/plugins/debugger/debuggeritemmanager.cpp
@@ -92,11 +92,19 @@ static void readDebuggers(const FileName &fileName, bool isSystem)
             // SDK debuggers are always considered to be up-to-date, so no need to recheck them.
         } else {
             // User settings.
-            if (item.isAutoDetected() && (!item.isValid() || item.engineType() == NoEngineType)) {
-                qWarning() << QString::fromLatin1("DebuggerItem \"%1\" (%2) dropped since it is not valid")
-                              .arg(item.command().toString()).arg(item.id().toString());
-                continue;
+            if (item.isAutoDetected()) {
+                if (!item.isValid() || item.engineType() == NoEngineType) {
+                    qWarning() << QString::fromLatin1("DebuggerItem \"%1\" (%2) read from \"%3\" dropped since it is not valid.")
+                                  .arg(item.command().toUserOutput(), item.id().toString(), fileName.toUserOutput());
+                    continue;
+                }
+                if (!item.command().toFileInfo().isExecutable()) {
+                    qWarning() << QString::fromLatin1("DebuggerItem \"%1\" (%2) read from \"%3\" dropped since the command is not executable.")
+                                  .arg(item.command().toUserOutput(), item.id().toString(), fileName.toUserOutput());
+                    continue;
+                }
             }
+
         }
         DebuggerItemManager::registerDebugger(item);
     }