diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp
index b0ced81a84cffaa421286f53a305c5438b43519c..d5087ff4a03e72289d44ba6217611fd11ee095c4 100644
--- a/src/plugins/debugger/debuggerdialogs.cpp
+++ b/src/plugins/debugger/debuggerdialogs.cpp
@@ -74,7 +74,7 @@ public:
     void populate(QList<ProcData> processes, const QString &excludePid = QString());
 
 private:
-    enum { processImageRole = Qt::UserRole };
+    enum { ProcessImageRole = Qt::UserRole, ProcessNameRole };
 
     bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
 
@@ -121,8 +121,12 @@ QString ProcessListFilterModel::executableForPid(const QString &pid) const
     const int rowCount = m_model->rowCount();
     for (int r = 0; r < rowCount; r++) {
         const QStandardItem *item = m_model->item(r, 0);
-        if (item->text() == pid)
-            return item->data(processImageRole).toString();
+        if (item->text() == pid) {
+            QString name = item->data(ProcessImageRole).toString();
+            if (name.isEmpty())
+                name = item->data(ProcessNameRole).toString();
+            return name;
+        }
     }
     return QString();
 }
@@ -135,18 +139,18 @@ void ProcessListFilterModel::populate(QList<ProcData> processes, const QString &
         m_model->removeRows(0, rowCount);
 
     QStandardItem *root  = m_model->invisibleRootItem();
-    foreach(const ProcData &proc, processes) {
+    foreach (const ProcData &proc, processes) {
         QList<QStandardItem *> row;
         row.append(new QStandardItem(proc.ppid));
-        row.front()->setData(QVariant(proc.image), processImageRole);
+        QString name = proc.image.isEmpty() ? proc.name : proc.image;
+        row.back()->setData(name, ProcessImageRole);
         row.append(new QStandardItem(proc.name));
-        if (!proc.image.isEmpty())
-            row.back()->setToolTip(proc.image);
+        row.back()->setToolTip(proc.image);
         row.append(new QStandardItem(proc.state));
 
         if (proc.ppid == excludePid)
-            foreach(QStandardItem *i, row)
-                i->setEnabled(false);
+            foreach (QStandardItem *item, row)
+                item->setEnabled(false);
         root->appendRow(row);
     }
 }
@@ -412,7 +416,7 @@ QString AttachExternalDialog::executable() const
 
 void AttachExternalDialog::pidChanged(const QString &pid)
 {
-    bool enabled = !pid.isEmpty() && pid != QLatin1String("0") && pid != m_selfPid;;
+    bool enabled = !pid.isEmpty() && pid != QLatin1String("0") && pid != m_selfPid;
     okButton()->setEnabled(enabled);
 }
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index acd27c8b6b2834ff10fac8dde1c00b99805d8c64..a2a1e8339426691488299d1eb9da644026de1361 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1694,6 +1694,7 @@ void DebuggerPluginPrivate::attachExternalApplication
     }
     DebuggerStartParameters sp;
     sp.attachPID = pid;
+    sp.displayName = tr("Process %1").arg(pid);
     sp.executable = binary;
     sp.crashParameter = crashParameter;
     sp.startMode = crashParameter.isEmpty() ? AttachExternal:AttachCrashedExternal;
@@ -1718,7 +1719,7 @@ void DebuggerPluginPrivate::attachCore(const QString &core, const QString &exe)
     DebuggerStartParameters sp;
     sp.executable = exe;
     sp.coreFile = core;
-    sp.displayName = tr("Core file: \"%1\"").arg(core);
+    sp.displayName = tr("Core file \"%1\"").arg(core);
     sp.startMode = AttachCore;
     DebuggerRunControl *rc = createDebugger(sp);
     startDebugger(rc);
@@ -2187,7 +2188,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
     //const bool running = m_state == InferiorRunOk;
 
     m_startExternalAction->setEnabled(!started && !starting);
-    m_attachExternalAction->setEnabled(!started && !starting);
+    m_attachExternalAction->setEnabled(true);
 #ifdef Q_OS_WIN
     m_attachCoreAction->setEnabled(false);
 #else