diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 16f1dfe7a8c..bf347e23c75 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -65,12 +65,19 @@ #include #include #include +#include namespace QmlDesigner { namespace Internal { BauhausPlugin *BauhausPlugin::m_pluginInstance = 0; +bool shouldAssertInException() +{ + QProcessEnvironment processEnvironment = QProcessEnvironment::systemEnvironment(); + return !processEnvironment.value("QMLDESIGNER_ASSERT_ON_EXCEPTION").isEmpty(); +} + BauhausPlugin::BauhausPlugin() : m_designerCore(0), m_designMode(0), @@ -92,7 +99,9 @@ BauhausPlugin::BauhausPlugin() : // 2. in gdb: "catch throw" or "catch throw Exception" // 3. set a breakpoint on __raise_exception() // And with gdb, you can even do this from your ~/.gdbinit file. - Exception::setShouldAssert(false); + // DnD is not working with gdb so this is still needed to get a good stacktrace + + Exception::setShouldAssert(shouldAssertInException()); } BauhausPlugin::~BauhausPlugin()