This switches the Locals and Expressions views to " - "automatically dereference pointers. This saves a level in the " - "tree view, but also loses data for the now-missing intermediate " - "level.")); + autoDerefPointers.setToolTip( + "
" + + Tr::tr("This switches the Locals and Expressions views to " + "automatically dereference pointers. This saves a level in the " + "tree view, but also loses data for the now-missing intermediate " + "level.")); // // Cdb Options @@ -186,22 +188,26 @@ DebuggerSettings::DebuggerSettings() showStdNamespace.setDefaultValue(true); showStdNamespace.setDisplayName(Tr::tr("Show \"std::\" Namespace in Types")); showStdNamespace.setLabelText(Tr::tr("Show \"std::\" namespace in types")); - showStdNamespace.setToolTip(Tr::tr("
Shows \"std::\" prefix for types from the standard library.")); + showStdNamespace.setToolTip( + "
" + Tr::tr("Shows \"std::\" prefix for types from the standard library.")); showQtNamespace.setSettingsKey(debugModeGroup, "ShowQtNamespace"); showQtNamespace.setDefaultValue(true); showQtNamespace.setDisplayName(Tr::tr("Show Qt's Namespace in Types")); showQtNamespace.setLabelText(Tr::tr("Show Qt's namespace in types")); - showQtNamespace.setToolTip(Tr::tr("
Shows Qt namespace prefix for Qt types. This is only " - "relevant if Qt was configured with \"-qtnamespace\".")); + showQtNamespace.setToolTip("
" + + Tr::tr("Shows Qt namespace prefix for Qt types. This is only " + "relevant if Qt was configured with \"-qtnamespace\".")); showQObjectNames.setSettingsKey(debugModeGroup, "ShowQObjectNames2"); showQObjectNames.setDefaultValue(true); showQObjectNames.setDisplayName(Tr::tr("Show QObject names if available")); showQObjectNames.setLabelText(Tr::tr("Show QObject names if available")); - showQObjectNames.setToolTip(Tr::tr("
Displays the objectName property of QObject based items. " - "Note that this can negatively impact debugger performance " - "even if no QObjects are present.")); + showQObjectNames.setToolTip( + "
" + + Tr::tr("Displays the objectName property of QObject based items. " + "Note that this can negatively impact debugger performance " + "even if no QObjects are present.")); sortStructMembers.setSettingsKey(debugModeGroup, "SortStructMembers"); sortStructMembers.setDisplayName(Tr::tr("Sort Members of Classes and Structs Alphabetically")); @@ -218,14 +224,15 @@ DebuggerSettings::DebuggerSettings() useCodeModel.setSettingsKey(debugModeGroup, "UseCodeModel"); useCodeModel.setDefaultValue(true); useCodeModel.setLabelText(Tr::tr("Use code model")); - useCodeModel.setToolTip(Tr::tr("
Selecting this causes the C++ Code Model being asked " - "for variable scope information. This might result in slightly faster " - "debugger operation but may fail for optimized code.")); + useCodeModel.setToolTip( + "
" + + Tr::tr("Selecting this causes the C++ Code Model being asked " + "for variable scope information. This might result in slightly faster " + "debugger operation but may fail for optimized code.")); showThreadNames.setSettingsKey(debugModeGroup, "ShowThreadNames"); showThreadNames.setLabelText(Tr::tr("Display thread names")); - showThreadNames.setToolTip(Tr::tr("
Displays names of QThread based threads.")); - + showThreadNames.setToolTip("
" + Tr::tr("Displays names of QThread based threads.")); // // Breakpoints @@ -233,12 +240,14 @@ DebuggerSettings::DebuggerSettings() synchronizeBreakpoints.setLabelText(Tr::tr("Synchronize Breakpoints")); adjustBreakpointLocations.setDisplayName(Tr::tr("Adjust Breakpoint Locations")); - adjustBreakpointLocations.setToolTip(Tr::tr("
Not all source code lines generate " - "executable code. Putting a breakpoint on such a line acts as " - "if the breakpoint was set on the next line that generated code. " - "Selecting 'Adjust Breakpoint Locations' shifts the red " - "breakpoint markers in such cases to the location of the true " - "breakpoint.")); + adjustBreakpointLocations.setToolTip( + "
" + + Tr::tr("
Not all source code lines generate " + "executable code. Putting a breakpoint on such a line acts as " + "if the breakpoint was set on the next line that generated code. " + "Selecting 'Adjust Breakpoint Locations' shifts the red " + "breakpoint markers in such cases to the location of the true " + "breakpoint.")); adjustBreakpointLocations.setDefaultValue(true); adjustBreakpointLocations.setSettingsKey(debugModeGroup, "AdjustBreakpointLocations"); adjustBreakpointLocations.setLabelText(Tr::tr( @@ -399,8 +408,10 @@ DebuggerSettings::DebuggerSettings() useAnnotationsInMainEditor.setSettingsKey(debugModeGroup, "UseAnnotations"); useAnnotationsInMainEditor.setLabelText(Tr::tr("Use annotations in main editor when debugging")); - useAnnotationsInMainEditor.setToolTip(Tr::tr("
Shows simple variable values " - "as annotations in the main editor during debugging.")); + useAnnotationsInMainEditor.setToolTip( + "
" + + Tr::tr("Shows simple variable values " + "as annotations in the main editor during debugging.")); useAnnotationsInMainEditor.setDefaultValue(true); usePseudoTracepoints.setSettingsKey(debugModeGroup, "UsePseudoTracepoints"); @@ -417,26 +428,31 @@ DebuggerSettings::DebuggerSettings() useToolTipsInMainEditor.setSettingsKey(debugModeGroup, "UseToolTips"); useToolTipsInMainEditor.setLabelText(Tr::tr("Use tooltips in main editor when debugging")); - useToolTipsInMainEditor.setToolTip(Tr::tr("
Enables tooltips for variable " - "values during debugging. Since this can slow down debugging and " - "does not provide reliable information as it does not use scope " - "information, it is switched off by default.")); + useToolTipsInMainEditor.setToolTip( + "
" + + Tr::tr("Enables tooltips for variable " + "values during debugging. Since this can slow down debugging and " + "does not provide reliable information as it does not use scope " + "information, it is switched off by default.")); useToolTipsInMainEditor.setDefaultValue(true); useToolTipsInLocalsView.setSettingsKey(debugModeGroup, "UseToolTipsInLocalsView"); useToolTipsInLocalsView.setLabelText(Tr::tr("Use Tooltips in Locals View when Debugging")); - useToolTipsInLocalsView.setToolTip(Tr::tr("
Enables tooltips in the locals " - "view during debugging.")); + useToolTipsInLocalsView.setToolTip("
" + + Tr::tr("Enables tooltips in the locals " + "view during debugging.")); useToolTipsInBreakpointsView.setSettingsKey(debugModeGroup, "UseToolTipsInBreakpointsView"); useToolTipsInBreakpointsView.setLabelText(Tr::tr("Use Tooltips in Breakpoints View when Debugging")); - useToolTipsInBreakpointsView.setToolTip(Tr::tr("
Enables tooltips in the breakpoints " - "view during debugging.")); + useToolTipsInBreakpointsView.setToolTip("
" + + Tr::tr("Enables tooltips in the breakpoints " + "view during debugging.")); useToolTipsInStackView.setSettingsKey(debugModeGroup, "UseToolTipsInStackView"); useToolTipsInStackView.setLabelText(Tr::tr("Use Tooltips in Stack View when Debugging")); - useToolTipsInStackView.setToolTip(Tr::tr("
Enables tooltips in the stack " - "view during debugging.")); + useToolTipsInStackView.setToolTip("
" + + Tr::tr("Enables tooltips in the stack " + "view during debugging.")); useToolTipsInStackView.setDefaultValue(true); skipKnownFrames.setSettingsKey(debugModeGroup, "SkipKnownFrames"); @@ -498,9 +514,11 @@ DebuggerSettings::DebuggerSettings() displayStringLimit.setRange(20, 10000); displayStringLimit.setSingleStep(10); displayStringLimit.setLabelText(Tr::tr("Display string length:")); - displayStringLimit.setToolTip(Tr::tr("
The maximum length of string entries in the " - "Locals and Expressions views. Longer than that are cut off " - "and displayed with an ellipsis attached.")); + displayStringLimit.setToolTip( + "
" + + Tr::tr("The maximum length of string entries in the " + "Locals and Expressions views. Longer than that are cut off " + "and displayed with an ellipsis attached.")); maximalStringLength.setSettingsKey(debugModeGroup, "MaximalStringLength"); maximalStringLength.setDefaultValue(10000); @@ -508,8 +526,10 @@ DebuggerSettings::DebuggerSettings() maximalStringLength.setRange(20, 10000000); maximalStringLength.setSingleStep(20); maximalStringLength.setLabelText(Tr::tr("Maximum string length:")); - maximalStringLength.setToolTip(Tr::tr("
The maximum length for strings in separated windows. " - "Longer strings are cut off and displayed with an ellipsis attached.")); + maximalStringLength.setToolTip( + "
"
+ + Tr::tr("The maximum length for strings in separated windows. "
+ "Longer strings are cut off and displayed with an ellipsis attached."));
expandStack.setLabelText(Tr::tr("Reload Full Stack"));
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index a9609584c6e..aa2283a0736 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -380,6 +380,10 @@ public:
void doShutdownEngine()
{
m_engine->setState(EngineShutdownRequested);
+ if (m_engine->isDying()) {
+ m_engine->notifyEngineShutdownFinished();
+ return;
+ }
m_engine->startDying();
m_engine->showMessage("CALL: SHUTDOWN ENGINE");
m_engine->shutdownEngine();
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 1894dd3f4e5..3fd126a4b07 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -114,6 +114,7 @@ struct TracepointCaptureData
};
const char tracepointCapturePropertyName[] = "GDB.TracepointCapture";
+const char notCompatibleMessage[] = "is not compatible with target architecture";
///////////////////////////////////////////////////////////////////////
//
@@ -346,8 +347,13 @@ void GdbEngine::handleResponse(const QString &buff)
// version and/or OS version used.
if (data.startsWith("warning:")) {
showMessage(data.mid(9), AppStuff); // Cut "warning: "
- if (data.contains("is not compatible with target architecture"))
+ if (data.contains(notCompatibleMessage))
m_ignoreNextTrap = true;
+ } else if (data.startsWith("Error while mapping")) {
+ m_detectTargetIncompat = true;
+ } else if (m_detectTargetIncompat && data.contains(notCompatibleMessage)) {
+ m_detectTargetIncompat = false;
+ m_ignoreNextTrap = true;
}
m_pendingLogStreamOutput += data;
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index b0e60b934ac..cd3a21ffbde 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -130,6 +130,7 @@ private: ////////// General Interface //////////
bool m_rerunPending = false;
bool m_ignoreNextTrap = false;
+ bool m_detectTargetIncompat = false;
////////// Gdb Output, State & Capability Handling //////////
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index 18f89b5968a..c715cff6d0f 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -276,6 +276,9 @@ void BuildSettingsWidget::cloneConfiguration()
if (name.isEmpty())
return;
+ // Save the current build configuration settings, so that the clone gets all the settings
+ m_target->project()->saveSettings();
+
BuildConfiguration *bc = BuildConfigurationFactory::clone(m_target, m_buildConfiguration);
if (!bc)
return;
diff --git a/src/plugins/qnx/qnxconfiguration.cpp b/src/plugins/qnx/qnxconfiguration.cpp
index 7a8f19926f8..c1b0e498f0c 100644
--- a/src/plugins/qnx/qnxconfiguration.cpp
+++ b/src/plugins/qnx/qnxconfiguration.cpp
@@ -283,7 +283,7 @@ void QnxConfiguration::createKit(const Target &target, const QnxToolChainMap &to
.arg(displayName())
.arg(target.shortDescription()));
- k->setAutoDetected(true);
+ k->setAutoDetected(false);
k->setAutoDetectionSource(envFile().toString());
k->setMutable(DeviceKitAspect::id(), true);
diff --git a/src/plugins/qnx/qnxconfigurationmanager.cpp b/src/plugins/qnx/qnxconfigurationmanager.cpp
index f947d4a6e25..da585b69cf2 100644
--- a/src/plugins/qnx/qnxconfigurationmanager.cpp
+++ b/src/plugins/qnx/qnxconfigurationmanager.cpp
@@ -29,7 +29,6 @@ QnxConfigurationManager::QnxConfigurationManager()
{
m_instance = this;
m_writer = new PersistentSettingsWriter(qnxConfigSettingsFileName(), "QnxConfigurations");
- restoreConfigurations();
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
this, &QnxConfigurationManager::saveConfigs);
}
diff --git a/src/plugins/qnx/qnxconfigurationmanager.h b/src/plugins/qnx/qnxconfigurationmanager.h
index 56ca4e6d772..bc0d02dd988 100644
--- a/src/plugins/qnx/qnxconfigurationmanager.h
+++ b/src/plugins/qnx/qnxconfigurationmanager.h
@@ -19,6 +19,8 @@ public:
QnxConfigurationManager();
~QnxConfigurationManager() override;
+ void restoreConfigurations();
+
static QnxConfigurationManager *instance();
QList