diff --git a/src/plugins/debugger/debuggerprofileinformation.cpp b/src/plugins/debugger/debuggerprofileinformation.cpp
index 41f0d8aff70df569a1e008e24b368d9ecfc938eb..bda8c41c5e0897d64f24c7404b4346892f1abd48 100644
--- a/src/plugins/debugger/debuggerprofileinformation.cpp
+++ b/src/plugins/debugger/debuggerprofileinformation.cpp
@@ -167,21 +167,36 @@ QVariant DebuggerProfileInformation::defaultValue(Profile *p) const
 
 QList<Task> DebuggerProfileInformation::validate(Profile *p) const
 {
+    const Core::Id id(Constants::TASK_CATEGORY_BUILDSYSTEM);
     QList<Task> result;
     FileName dbg = debuggerCommand(p);
     if (dbg.isEmpty()) {
-        result << Task(Task::Warning, tr("No debugger set up."), FileName(), -1,
-                                        Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM));
+        result << Task(Task::Warning, tr("No debugger set up."), FileName(), -1, id);
         return result;
     }
 
     QFileInfo fi = dbg.toFileInfo();
     if (!fi.exists() || fi.isDir())
-        result << Task(Task::Error, tr("Debugger not found."), FileName(), -1,
-                                        Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM));
+        result << Task(Task::Error, tr("Debugger not found."), FileName(), -1, id);
     else if (!fi.isExecutable())
-        result << Task(Task::Error, tr("Debugger not exectutable."), FileName(), -1,
-                                        Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM));
+        result << Task(Task::Error, tr("Debugger not exectutable."), FileName(), -1, id);
+
+    if (ToolChain *tc = ToolChainProfileInformation::toolChain(p)) {
+        // We need an absolute path to be able to locate Python on Windows.
+        const Abi abi = tc->targetAbi();
+        if (abi.os() == Abi::WindowsOS && !fi.isAbsolute()) {
+            result << Task(Task::Error, tr("The debugger location must be given as an "
+                   "absolute path (%1).").arg(dbg.toString()), FileName(), -1, id);
+        }
+        // FIXME: Make sure debugger matches toolchain.
+        // if (isCdb()) {
+        //    if (abi.binaryFormat() != Abi::PEFormat || abi.os() != Abi::WindowsOS) {
+        //        result << Task(Tas->errorDetails.push_back(CdbEngine::tr("The CDB debug engine does not support the %1 ABI.").
+        //                                      arg(abi.toString()));
+        //        return false;
+        //    }
+        // }
+    }
 
     return result;
 }