diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro
index b836ec640eaf4f54db92e30654eb75aa60b1d489..246a491594cff07492bafc934413ccb560043382 100644
--- a/src/plugins/debugger/debugger.pro
+++ b/src/plugins/debugger/debugger.pro
@@ -8,7 +8,7 @@ TARGET = Debugger
 include(../../qtcreatorplugin.pri)
 include(debugger_dependencies.pri)
 
-DEFINES += DEBUGGER_LIBRARY
+DEFINES += DEBUGGER_LIBRARY QT_NO_CAST_FROM_ASCII
 
 INCLUDEPATH += $$PWD/../../libs/utils
 
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index e5d9a21be2343d46659f7da822811eda14008930..580830a76e37d7309d18ac0972c3d83bd825b4ea 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "debuggeractions.h"
 #include "debuggerconstants.h"
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 8ebcbde75639c18d1e6d62009256c8712851aa70..6c254b27a2e1a49088aa50e275295573fd9d5846 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "debuggerplugin.h"
 
 #include "debuggerstartparameters.h"
diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp
index 0defb237fc7600704bd72442e6c7ef5a67b25417..90f77262b8062dc8a5e165b858730b6badc65874 100644
--- a/src/plugins/debugger/gdb/coregdbadapter.cpp
+++ b/src/plugins/debugger/gdb/coregdbadapter.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "coregdbadapter.h"
 
 #include "debuggerstartparameters.h"
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 46ac9ed4d0123223d4fee7cd884d750f141f4ed4..d2e4e458fee5d51cab5247cd9c0b495bb0756889 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "gdbengine.h"
 
 #include "debuggerstartparameters.h"
diff --git a/src/plugins/debugger/gdb/gdbmi.cpp b/src/plugins/debugger/gdb/gdbmi.cpp
index 40ad4693cf663ce54dc77886f3bd0e5d5753f75c..42e06e5bff6e7408e5404459a5ae9239dd9717b6 100644
--- a/src/plugins/debugger/gdb/gdbmi.cpp
+++ b/src/plugins/debugger/gdb/gdbmi.cpp
@@ -246,9 +246,26 @@ void GdbMi::dumpChildren(QByteArray * str, bool multiline, int indent) const
     }
 }
 
-class MyString : public QString {
-public:
-    ushort at(int i) const { return constData()[i].unicode(); }
+template <class String, typename CharType>
+struct EscapeTraits
+{
+    static CharType at(const String &s, int  i)
+        { return s.at(i); }
+    static void appendChar(CharType c, String *s)
+        { s->append(c); }
+    static void appendString(const char *c, String *s)
+        { s->append(c); }
+};
+
+template <>
+struct EscapeTraits<QString, ushort>
+{
+    static ushort at(const QString &s, int  i)
+        { return s.at(i).unicode(); }
+    static void appendChar(ushort c, QString *s)
+        { s->append(QLatin1Char(c)); }
+    static void appendString(const char *c, QString *s)
+        { s->append(QLatin1String(c)); }
 };
 
 template<class ST, typename CT>
@@ -257,25 +274,25 @@ inline ST escapeCStringTpl(const ST &ba)
     ST ret;
     ret.reserve(ba.length() * 2);
     for (int i = 0; i < ba.length(); ++i) {
-        CT c = ba.at(i);
+        const CT c = EscapeTraits<ST, CT>::at(ba, i);
         switch (c) {
-            case '\\': ret += "\\\\"; break;
-            case '\a': ret += "\\a"; break;
-            case '\b': ret += "\\b"; break;
-            case '\f': ret += "\\f"; break;
-            case '\n': ret += "\\n"; break;
-            case '\r': ret += "\\r"; break;
-            case '\t': ret += "\\t"; break;
-            case '\v': ret += "\\v"; break;
-            case '"': ret += "\\\""; break;
+            case '\\': EscapeTraits<ST, CT>::appendString("\\\\", &ret); break;
+            case '\a': EscapeTraits<ST, CT>::appendString("\\a", &ret); break;
+            case '\b': EscapeTraits<ST, CT>::appendString("\\b", &ret); break;
+            case '\f': EscapeTraits<ST, CT>::appendString("\\f", &ret); break;
+            case '\n': EscapeTraits<ST, CT>::appendString("\\n", &ret); break;
+            case '\r': EscapeTraits<ST, CT>::appendString("\\r", &ret); break;
+            case '\t': EscapeTraits<ST, CT>::appendString("\\t", &ret); break;
+            case '\v': EscapeTraits<ST, CT>::appendString("\\v", &ret); break;
+            case '"': EscapeTraits<ST, CT>::appendString("\\\"", &ret); break;
             default:
                 if (c < 32 || c == 127) {
-                    ret += '\\';
-                    ret += '0' + (c >> 6);
-                    ret += '0' + ((c >> 3) & 7);
-                    ret += '0' + (c & 7);
+                    EscapeTraits<ST, CT>::appendChar('\\', &ret);
+                    EscapeTraits<ST, CT>::appendChar('0' + (c >> 6), &ret);
+                    EscapeTraits<ST, CT>::appendChar('0' + ((c >> 3) & 7), &ret);
+                    EscapeTraits<ST, CT>::appendChar('0' + (c & 7), &ret);
                 } else {
-                    ret += c;
+                    EscapeTraits<ST, CT>::appendChar(c, &ret);
                 }
         }
     }
@@ -284,7 +301,7 @@ inline ST escapeCStringTpl(const ST &ba)
 
 QString GdbMi::escapeCString(const QString &ba)
 {
-    return escapeCStringTpl<MyString, ushort>(static_cast<const MyString &>(ba));
+    return escapeCStringTpl<QString, ushort>(ba);
 }
 
 QByteArray GdbMi::escapeCString(const QByteArray &ba)
diff --git a/src/plugins/debugger/lldb/lldbenginehost.cpp b/src/plugins/debugger/lldb/lldbenginehost.cpp
index 19c9481fa0ccf5c30e395b58b0467523177859c0..810ab62de85ea153a4b004fe013d3e08a8dfc392 100644
--- a/src/plugins/debugger/lldb/lldbenginehost.cpp
+++ b/src/plugins/debugger/lldb/lldbenginehost.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "lldbenginehost.h"
 
 #include "debuggerstartparameters.h"
diff --git a/src/plugins/debugger/loadcoredialog.cpp b/src/plugins/debugger/loadcoredialog.cpp
index 888d6361b70b98b203c86723dfc27201ad24d349..374025cd0793e5293579ff7365fc545441786d55 100644
--- a/src/plugins/debugger/loadcoredialog.cpp
+++ b/src/plugins/debugger/loadcoredialog.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "loadcoredialog.h"
 
 #include "debuggerconstants.h"
diff --git a/src/plugins/debugger/namedemangler/namedemangler.cpp b/src/plugins/debugger/namedemangler/namedemangler.cpp
index b79490dc0b064f7763e83e984461061305a97e44..741c7bb4f64a5ce8ed153fbea8b1b08576a5d59a 100644
--- a/src/plugins/debugger/namedemangler/namedemangler.cpp
+++ b/src/plugins/debugger/namedemangler/namedemangler.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "namedemangler.h"
 
 #include "demanglerexceptions.h"
diff --git a/src/plugins/debugger/namedemangler/parsetreenodes.cpp b/src/plugins/debugger/namedemangler/parsetreenodes.cpp
index e423152b23cdef3cdb7ab8a13bbf43e3a994ecbc..a6760874f523d68de4d3339277e6925b45b1e845 100644
--- a/src/plugins/debugger/namedemangler/parsetreenodes.cpp
+++ b/src/plugins/debugger/namedemangler/parsetreenodes.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "parsetreenodes.h"
 
 #include "demanglerexceptions.h"
diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp
index 54672ad280392670a53776d73be596b47d5acb81..e8235dc716bb941b51867df387db4cc92a18cc0b 100644
--- a/src/plugins/debugger/pdb/pdbengine.cpp
+++ b/src/plugins/debugger/pdb/pdbengine.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "pdbengine.h"
 
 #include "debuggerstartparameters.h"
diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.cpp b/src/plugins/debugger/qml/qmlinspectoradapter.cpp
index 77d24710cd39de334d150faf291138f0dd0953cc..9528a1d5aff69d620fa6fefb0c978e2ab2d97786 100644
--- a/src/plugins/debugger/qml/qmlinspectoradapter.cpp
+++ b/src/plugins/debugger/qml/qmlinspectoradapter.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "qmlinspectoradapter.h"
 
 #include "debuggeractions.h"
diff --git a/src/plugins/debugger/qml/qmlinspectoragent.cpp b/src/plugins/debugger/qml/qmlinspectoragent.cpp
index ab7f926f5cd4c85eaa92f8205d0efe02fb8800b9..c6fe7cb375e68429193f1a9a0c4f75d7d2fb61a9 100644
--- a/src/plugins/debugger/qml/qmlinspectoragent.cpp
+++ b/src/plugins/debugger/qml/qmlinspectoragent.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "qmlinspectoragent.h"
 
 #include "debuggeractions.h"
diff --git a/src/plugins/debugger/qml/qmllivetextpreview.cpp b/src/plugins/debugger/qml/qmllivetextpreview.cpp
index 05e8ac4938c8b9618a9581460692b5e96e4f630d..55c0032ff632cbbfce705506eca8a3c4b5d9c4b4 100644
--- a/src/plugins/debugger/qml/qmllivetextpreview.cpp
+++ b/src/plugins/debugger/qml/qmllivetextpreview.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "qmllivetextpreview.h"
 
 #include "qmlinspectoradapter.h"
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
index ed9ac64c57e7f2f833dd0c21677dff22cc1dfebc..fd91502654de7ba319b97ce35c88a99ad6304591 100644
--- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
+++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "qmlv8debuggerclient.h"
 #include "qmlv8debuggerclientconstants.h"
 #include "debuggerstringutils.h"
diff --git a/src/plugins/debugger/script/scriptengine.cpp b/src/plugins/debugger/script/scriptengine.cpp
index 2d6b9d5da38e3f0e7239c92252b3598bcd6dc704..5cc7e701afbfc6238ab48de587928a59057f9dca 100644
--- a/src/plugins/debugger/script/scriptengine.cpp
+++ b/src/plugins/debugger/script/scriptengine.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "scriptengine.h"
 
 #include "debuggerstartparameters.h"
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 4d57dc478bc62592d38478e7016dd22175802c2f..fb1cdf29d7bbe3b19c83578dfb599244729c5742 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -28,8 +28,6 @@
 **
 **************************************************************************/
 
-#define QT_NO_CAST_FROM_ASCII
-
 #include "watchhandler.h"
 
 #include "breakhandler.h"