forked from qt-creator/qt-creator
Debugger: Move CommonOptionsPage to new settings scheme
Change-Id: I851931d3b0536659dc2e53a67b9879caad2f3166 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -7,19 +7,133 @@
|
|||||||
#include "debuggerinternalconstants.h"
|
#include "debuggerinternalconstants.h"
|
||||||
#include "debuggertr.h"
|
#include "debuggertr.h"
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
#include "registerpostmortemaction.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
|
|
||||||
|
#include <QGuiApplication>
|
||||||
|
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace Debugger::Constants;
|
using namespace Debugger::Constants;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace Debugger::Internal {
|
namespace Debugger::Internal {
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
// CommonSettings
|
||||||
//
|
|
||||||
// CommonOptionsPage
|
CommonSettings &commonSettings()
|
||||||
//
|
{
|
||||||
///////////////////////////////////////////////////////////////////////
|
static CommonSettings settings;
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
CommonSettings::CommonSettings()
|
||||||
|
{
|
||||||
|
const QString debugModeGroup("DebugMode");
|
||||||
|
|
||||||
|
useAlternatingRowColors.setSettingsKey(debugModeGroup, "UseAlternatingRowColours");
|
||||||
|
useAlternatingRowColors.setLabelText(Tr::tr("Use alternating row colors in debug views"));
|
||||||
|
|
||||||
|
stationaryEditorWhileStepping.setSettingsKey(debugModeGroup, "StationaryEditorWhileStepping");
|
||||||
|
stationaryEditorWhileStepping.setLabelText(Tr::tr("Keep editor stationary when stepping"));
|
||||||
|
stationaryEditorWhileStepping.setToolTip(
|
||||||
|
Tr::tr("Scrolls the editor only when it is necessary to keep the current line in view, "
|
||||||
|
"instead of keeping the next statement centered at all times."));
|
||||||
|
|
||||||
|
forceLoggingToConsole.setSettingsKey(debugModeGroup, "ForceLoggingToConsole");
|
||||||
|
forceLoggingToConsole.setLabelText(Tr::tr("Force logging to console"));
|
||||||
|
forceLoggingToConsole.setToolTip(
|
||||||
|
Tr::tr("Sets QT_LOGGING_TO_CONSOLE=1 in the environment of the debugged program, "
|
||||||
|
"preventing storing debug output in system logs."));
|
||||||
|
|
||||||
|
fontSizeFollowsEditor.setSettingsKey(debugModeGroup, "FontSizeFollowsEditor");
|
||||||
|
fontSizeFollowsEditor.setToolTip(Tr::tr("Changes the font size in the debugger views when "
|
||||||
|
"the font size in the main editor changes."));
|
||||||
|
fontSizeFollowsEditor.setLabelText(Tr::tr("Debugger font size follows main editor"));
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
registerForPostMortem = new RegisterPostMortemAction;
|
||||||
|
registerForPostMortem->setSettingsKey(debugModeGroup, "RegisterForPostMortem");
|
||||||
|
registerForPostMortem->setToolTip(Tr::tr("Registers %1 for debugging crashed applications.")
|
||||||
|
.arg(QGuiApplication::applicationDisplayName()));
|
||||||
|
registerForPostMortem->setLabelText(
|
||||||
|
Tr::tr("Use %1 for post-mortem debugging").arg(QGuiApplication::applicationDisplayName()));
|
||||||
|
registerAspect(registerForPostMortem);
|
||||||
|
#else
|
||||||
|
// Some dummy.
|
||||||
|
registerForPostMortem = new BoolAspect;
|
||||||
|
registerForPostMortem->setVisible(false);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
maximalStackDepth.setSettingsKey(debugModeGroup, "MaximalStackDepth");
|
||||||
|
maximalStackDepth.setDefaultValue(20);
|
||||||
|
maximalStackDepth.setSpecialValueText(Tr::tr("<unlimited>"));
|
||||||
|
maximalStackDepth.setRange(0, 1000);
|
||||||
|
maximalStackDepth.setSingleStep(5);
|
||||||
|
maximalStackDepth.setLabelText(Tr::tr("Maximum stack depth:"));
|
||||||
|
|
||||||
|
showQmlObjectTree.setSettingsKey(debugModeGroup, "ShowQmlObjectTree");
|
||||||
|
showQmlObjectTree.setDefaultValue(true);
|
||||||
|
showQmlObjectTree.setToolTip(Tr::tr("Shows QML object tree in Locals and Expressions "
|
||||||
|
"when connected and not stepping."));
|
||||||
|
showQmlObjectTree.setLabelText(Tr::tr("Show QML object tree"));
|
||||||
|
|
||||||
|
const QString t = Tr::tr("Stopping and stepping in the debugger "
|
||||||
|
"will automatically open views associated with the current location.") + '\n';
|
||||||
|
|
||||||
|
closeSourceBuffersOnExit.setSettingsKey(debugModeGroup, "CloseBuffersOnExit");
|
||||||
|
closeSourceBuffersOnExit.setLabelText(Tr::tr("Close temporary source views on debugger exit"));
|
||||||
|
closeSourceBuffersOnExit.setToolTip(t + Tr::tr("Closes automatically opened source views when the debugger exits."));
|
||||||
|
|
||||||
|
closeMemoryBuffersOnExit.setSettingsKey(debugModeGroup, "CloseMemoryBuffersOnExit");
|
||||||
|
closeMemoryBuffersOnExit.setDefaultValue(true);
|
||||||
|
closeMemoryBuffersOnExit.setLabelText(Tr::tr("Close temporary memory views on debugger exit"));
|
||||||
|
closeMemoryBuffersOnExit.setToolTip(t + Tr::tr("Closes automatically opened memory views when the debugger exits."));
|
||||||
|
|
||||||
|
switchModeOnExit.setSettingsKey(debugModeGroup, "SwitchModeOnExit");
|
||||||
|
switchModeOnExit.setLabelText(Tr::tr("Switch to previous mode on debugger exit"));
|
||||||
|
|
||||||
|
breakpointsFullPathByDefault.setSettingsKey(debugModeGroup, "BreakpointsFullPath");
|
||||||
|
breakpointsFullPathByDefault.setToolTip(Tr::tr("Enables a full file path in breakpoints by default also for GDB."));
|
||||||
|
breakpointsFullPathByDefault.setLabelText(Tr::tr("Set breakpoints using a full absolute path"));
|
||||||
|
|
||||||
|
raiseOnInterrupt.setSettingsKey(debugModeGroup, "RaiseOnInterrupt");
|
||||||
|
raiseOnInterrupt.setDefaultValue(true);
|
||||||
|
raiseOnInterrupt.setLabelText(Tr::tr("Bring %1 to foreground when application interrupts")
|
||||||
|
.arg(QGuiApplication::applicationDisplayName()));
|
||||||
|
|
||||||
|
useAnnotationsInMainEditor.setSettingsKey(debugModeGroup, "UseAnnotations");
|
||||||
|
useAnnotationsInMainEditor.setLabelText(Tr::tr("Use annotations in main editor when debugging"));
|
||||||
|
useAnnotationsInMainEditor.setToolTip(
|
||||||
|
"<p>"
|
||||||
|
+ Tr::tr("Shows simple variable values "
|
||||||
|
"as annotations in the main editor during debugging."));
|
||||||
|
useAnnotationsInMainEditor.setDefaultValue(true);
|
||||||
|
|
||||||
|
warnOnReleaseBuilds.setSettingsKey(debugModeGroup, "WarnOnReleaseBuilds");
|
||||||
|
warnOnReleaseBuilds.setDefaultValue(true);
|
||||||
|
warnOnReleaseBuilds.setLabelText(Tr::tr("Warn when debugging \"Release\" builds"));
|
||||||
|
warnOnReleaseBuilds.setToolTip(Tr::tr("Shows a warning when starting the debugger "
|
||||||
|
"on a binary with insufficient debug information."));
|
||||||
|
|
||||||
|
useToolTipsInMainEditor.setSettingsKey(debugModeGroup, "UseToolTips");
|
||||||
|
useToolTipsInMainEditor.setLabelText(Tr::tr("Use tooltips in main editor when debugging"));
|
||||||
|
useToolTipsInMainEditor.setToolTip(
|
||||||
|
"<p>"
|
||||||
|
+ 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
CommonSettings::~CommonSettings()
|
||||||
|
{
|
||||||
|
delete registerForPostMortem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class CommonOptionsPageWidget : public Core::IOptionsPageWidget
|
class CommonOptionsPageWidget : public Core::IOptionsPageWidget
|
||||||
{
|
{
|
||||||
@@ -67,23 +181,12 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CommonOptionsPage::CommonOptionsPage()
|
QString msgSetBreakpointAtFunction(const char *function)
|
||||||
{
|
|
||||||
setId(DEBUGGER_COMMON_SETTINGS_ID);
|
|
||||||
setDisplayName(Tr::tr("General"));
|
|
||||||
setCategory(DEBUGGER_SETTINGS_CATEGORY);
|
|
||||||
setDisplayCategory(Tr::tr("Debugger"));
|
|
||||||
setCategoryIconPath(":/debugger/images/settingscategory_debugger.png");
|
|
||||||
setWidgetCreator([] { return new CommonOptionsPageWidget; });
|
|
||||||
}
|
|
||||||
|
|
||||||
QString CommonOptionsPage::msgSetBreakpointAtFunction(const char *function)
|
|
||||||
{
|
{
|
||||||
return Tr::tr("Stop when %1() is called").arg(QLatin1String(function));
|
return Tr::tr("Stop when %1() is called").arg(QLatin1String(function));
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CommonOptionsPage::msgSetBreakpointAtFunctionToolTip(const char *function,
|
QString msgSetBreakpointAtFunctionToolTip(const char *function, const QString &hint)
|
||||||
const QString &hint)
|
|
||||||
{
|
{
|
||||||
QString result = "<html><head/><body>";
|
QString result = "<html><head/><body>";
|
||||||
result += Tr::tr("Always adds a breakpoint on the <i>%1()</i> function.")
|
result += Tr::tr("Always adds a breakpoint on the <i>%1()</i> function.")
|
||||||
@@ -96,6 +199,23 @@ QString CommonOptionsPage::msgSetBreakpointAtFunctionToolTip(const char *functio
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CommonSettingPage
|
||||||
|
|
||||||
|
class CommonSettingsPage final : public Core::IOptionsPage
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CommonSettingsPage()
|
||||||
|
{
|
||||||
|
setId(DEBUGGER_COMMON_SETTINGS_ID);
|
||||||
|
setDisplayName(Tr::tr("General"));
|
||||||
|
setCategory(DEBUGGER_SETTINGS_CATEGORY);
|
||||||
|
setDisplayCategory(Tr::tr("Debugger"));
|
||||||
|
setCategoryIconPath(":/debugger/images/settingscategory_debugger.png");
|
||||||
|
setWidgetCreator([] { return new CommonOptionsPageWidget; });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const CommonSettingsPage commonSettingsPage;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@@ -7,16 +7,65 @@
|
|||||||
|
|
||||||
namespace Debugger::Internal {
|
namespace Debugger::Internal {
|
||||||
|
|
||||||
class CommonOptionsPage final : public Core::IOptionsPage
|
class SourcePathMapAspectPrivate;
|
||||||
|
|
||||||
|
// Entries starting with '(' are considered regular expressions in the ElfReader.
|
||||||
|
// This is useful when there are multiple build machines with different
|
||||||
|
// path, and the user would like to match anything up to some known
|
||||||
|
// directory to his local project.
|
||||||
|
// Syntax: (/home/.*)/KnownSubdir -> /home/my/project
|
||||||
|
using SourcePathMap = QMap<QString, QString>;
|
||||||
|
|
||||||
|
class SourcePathMapAspect : public Utils::TypedAspect<SourcePathMap>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CommonOptionsPage();
|
SourcePathMapAspect();
|
||||||
|
~SourcePathMapAspect() override;
|
||||||
|
|
||||||
static QString msgSetBreakpointAtFunction(const char *function);
|
void fromMap(const QVariantMap &map) override;
|
||||||
static QString msgSetBreakpointAtFunctionToolTip(const char *function,
|
void toMap(QVariantMap &map) const override;
|
||||||
const QString &hint = {});
|
|
||||||
|
void addToLayout(Layouting::LayoutItem &parent) override;
|
||||||
|
|
||||||
|
void readSettings() override;
|
||||||
|
void writeSettings() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void guiToBuffer() override;
|
||||||
|
void bufferToGui() override;
|
||||||
|
|
||||||
|
SourcePathMapAspectPrivate *d = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CommonSettings final : public Utils::AspectContainer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CommonSettings();
|
||||||
|
~CommonSettings();
|
||||||
|
|
||||||
|
Utils::BoolAspect useAlternatingRowColors;
|
||||||
|
Utils::BoolAspect useAnnotationsInMainEditor;
|
||||||
|
Utils::BoolAspect useToolTipsInMainEditor;
|
||||||
|
Utils::BoolAspect closeSourceBuffersOnExit;
|
||||||
|
Utils::BoolAspect closeMemoryBuffersOnExit;
|
||||||
|
Utils::BoolAspect raiseOnInterrupt;
|
||||||
|
Utils::BoolAspect breakpointsFullPathByDefault;
|
||||||
|
Utils::BoolAspect warnOnReleaseBuilds;
|
||||||
|
Utils::IntegerAspect maximalStackDepth;
|
||||||
|
|
||||||
|
Utils::BoolAspect fontSizeFollowsEditor;
|
||||||
|
Utils::BoolAspect switchModeOnExit;
|
||||||
|
Utils::BoolAspect showQmlObjectTree;
|
||||||
|
Utils::BoolAspect stationaryEditorWhileStepping;
|
||||||
|
Utils::BoolAspect forceLoggingToConsole;
|
||||||
|
|
||||||
|
SourcePathMapAspect sourcePathMap;
|
||||||
|
|
||||||
|
Utils::BoolAspect *registerForPostMortem = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CommonSettings &commonSettings();
|
||||||
|
|
||||||
class LocalsAndExpressionsOptionsPage final : public Core::IOptionsPage
|
class LocalsAndExpressionsOptionsPage final : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -24,3 +73,5 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // Debugger::Internal
|
} // Debugger::Internal
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(Debugger::Internal::SourcePathMap)
|
||||||
|
@@ -9,10 +9,6 @@
|
|||||||
#include "debuggertr.h"
|
#include "debuggertr.h"
|
||||||
#include "gdb/gdbsettings.h"
|
#include "gdb/gdbsettings.h"
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
|
||||||
#include "registerpostmortemaction.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <coreplugin/coreconstants.h>
|
#include <coreplugin/coreconstants.h>
|
||||||
|
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
@@ -25,14 +21,7 @@ using namespace Utils;
|
|||||||
|
|
||||||
namespace Debugger::Internal {
|
namespace Debugger::Internal {
|
||||||
|
|
||||||
const char debugModeSettingsGroupC[] = "DebugMode";
|
|
||||||
const char cdbSettingsGroupC[] = "CDB2";
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// DebuggerSettings
|
// DebuggerSettings
|
||||||
//
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
DebuggerSettings &settings()
|
DebuggerSettings &settings()
|
||||||
{
|
{
|
||||||
@@ -41,6 +30,25 @@ DebuggerSettings &settings()
|
|||||||
}
|
}
|
||||||
|
|
||||||
DebuggerSettings::DebuggerSettings() :
|
DebuggerSettings::DebuggerSettings() :
|
||||||
|
useAlternatingRowColors{commonSettings().useAlternatingRowColors},
|
||||||
|
useAnnotationsInMainEditor{commonSettings().useAnnotationsInMainEditor},
|
||||||
|
useToolTipsInMainEditor{commonSettings().useToolTipsInMainEditor},
|
||||||
|
closeSourceBuffersOnExit{commonSettings().closeSourceBuffersOnExit},
|
||||||
|
closeMemoryBuffersOnExit{commonSettings().closeMemoryBuffersOnExit},
|
||||||
|
raiseOnInterrupt{commonSettings().raiseOnInterrupt},
|
||||||
|
breakpointsFullPathByDefault{commonSettings().breakpointsFullPathByDefault},
|
||||||
|
warnOnReleaseBuilds{commonSettings().warnOnReleaseBuilds},
|
||||||
|
maximalStackDepth{commonSettings().maximalStackDepth},
|
||||||
|
|
||||||
|
fontSizeFollowsEditor{commonSettings().fontSizeFollowsEditor},
|
||||||
|
switchModeOnExit{commonSettings().switchModeOnExit},
|
||||||
|
showQmlObjectTree{commonSettings().showQmlObjectTree},
|
||||||
|
stationaryEditorWhileStepping{commonSettings().stationaryEditorWhileStepping},
|
||||||
|
forceLoggingToConsole{commonSettings().forceLoggingToConsole},
|
||||||
|
|
||||||
|
sourcePathMap{commonSettings().sourcePathMap},
|
||||||
|
registerForPostMortem{*commonSettings().registerForPostMortem},
|
||||||
|
|
||||||
gdbWatchdogTimeout{gdbSettings().gdbWatchdogTimeout},
|
gdbWatchdogTimeout{gdbSettings().gdbWatchdogTimeout},
|
||||||
skipKnownFrames{gdbSettings().skipKnownFrames},
|
skipKnownFrames{gdbSettings().skipKnownFrames},
|
||||||
useMessageBoxForSignals{gdbSettings().useMessageBoxForSignals},
|
useMessageBoxForSignals{gdbSettings().useMessageBoxForSignals},
|
||||||
@@ -63,8 +71,8 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
enableReverseDebugging{gdbSettings().enableReverseDebugging},
|
enableReverseDebugging{gdbSettings().enableReverseDebugging},
|
||||||
multiInferior{gdbSettings().multiInferior}
|
multiInferior{gdbSettings().multiInferior}
|
||||||
{
|
{
|
||||||
const QString debugModeGroup(debugModeSettingsGroupC);
|
const QString debugModeGroup("DebugMode");
|
||||||
const QString cdbSettingsGroup(cdbSettingsGroupC);
|
const QString cdbSettingsGroup("CDB2");
|
||||||
|
|
||||||
settingsDialog.setLabelText(Tr::tr("Configure Debugger..."));
|
settingsDialog.setLabelText(Tr::tr("Configure Debugger..."));
|
||||||
|
|
||||||
@@ -101,29 +109,6 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
alwaysAdjustColumnWidths.setSettingsKey(debugModeGroup, "AlwaysAdjustColumnWidths");
|
alwaysAdjustColumnWidths.setSettingsKey(debugModeGroup, "AlwaysAdjustColumnWidths");
|
||||||
alwaysAdjustColumnWidths.setDefaultValue(true);
|
alwaysAdjustColumnWidths.setDefaultValue(true);
|
||||||
|
|
||||||
// Needed by QML Inspector
|
|
||||||
//useAlternatingRowColors.setLabelText(Tr::tr("Use Alternating Row Colors"));
|
|
||||||
useAlternatingRowColors.setSettingsKey(debugModeGroup, "UseAlternatingRowColours");
|
|
||||||
useAlternatingRowColors.setLabelText(Tr::tr("Use alternating row colors in debug views"));
|
|
||||||
|
|
||||||
stationaryEditorWhileStepping.setSettingsKey(debugModeGroup, "StationaryEditorWhileStepping");
|
|
||||||
stationaryEditorWhileStepping.setLabelText(Tr::tr("Keep editor stationary when stepping"));
|
|
||||||
stationaryEditorWhileStepping.setToolTip(Tr::tr("Scrolls the editor only when it is necessary "
|
|
||||||
"to keep the current line in view, "
|
|
||||||
"instead of keeping the next statement centered at "
|
|
||||||
"all times."));
|
|
||||||
|
|
||||||
forceLoggingToConsole.setSettingsKey(debugModeGroup, "ForceLoggingToConsole");
|
|
||||||
forceLoggingToConsole.setLabelText(Tr::tr("Force logging to console"));
|
|
||||||
forceLoggingToConsole.setToolTip(Tr::tr("Sets QT_LOGGING_TO_CONSOLE=1 in the environment "
|
|
||||||
"of the debugged program, preventing storing debug output "
|
|
||||||
"in system logs."));
|
|
||||||
|
|
||||||
fontSizeFollowsEditor.setSettingsKey(debugModeGroup, "FontSizeFollowsEditor");
|
|
||||||
fontSizeFollowsEditor.setToolTip(Tr::tr("Changes the font size in the debugger views when "
|
|
||||||
"the font size in the main editor changes."));
|
|
||||||
fontSizeFollowsEditor.setLabelText(Tr::tr("Debugger font size follows main editor"));
|
|
||||||
|
|
||||||
logTimeStamps.setLabelText(Tr::tr("Log Time Stamps"));
|
logTimeStamps.setLabelText(Tr::tr("Log Time Stamps"));
|
||||||
logTimeStamps.setSettingsKey(debugModeGroup, "LogTimeStamps");
|
logTimeStamps.setSettingsKey(debugModeGroup, "LogTimeStamps");
|
||||||
|
|
||||||
@@ -150,11 +135,9 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
|
|
||||||
cdbBreakEvents.setSettingsKey(cdbSettingsGroup, "BreakEvent");
|
cdbBreakEvents.setSettingsKey(cdbSettingsGroup, "BreakEvent");
|
||||||
cdbBreakOnCrtDbgReport.setSettingsKey(cdbSettingsGroup, "BreakOnCrtDbgReport");
|
cdbBreakOnCrtDbgReport.setSettingsKey(cdbSettingsGroup, "BreakOnCrtDbgReport");
|
||||||
cdbBreakOnCrtDbgReport.setLabelText(
|
cdbBreakOnCrtDbgReport.setLabelText(msgSetBreakpointAtFunction(Constants::CRT_DEBUG_REPORT));
|
||||||
CommonOptionsPage::msgSetBreakpointAtFunction(Constants::CRT_DEBUG_REPORT));
|
cdbBreakOnCrtDbgReport.setToolTip(msgSetBreakpointAtFunctionToolTip(Constants::CRT_DEBUG_REPORT,
|
||||||
cdbBreakOnCrtDbgReport.setToolTip(
|
Tr::tr("Catches runtime error messages caused by assert(), for example.")));
|
||||||
CommonOptionsPage::msgSetBreakpointAtFunctionToolTip(Constants::CRT_DEBUG_REPORT,
|
|
||||||
Tr::tr("Catches runtime error messages caused by assert(), for example.")));
|
|
||||||
|
|
||||||
useCdbConsole.setSettingsKey(cdbSettingsGroup, "CDB_Console");
|
useCdbConsole.setSettingsKey(cdbSettingsGroup, "CDB_Console");
|
||||||
useCdbConsole.setToolTip("<html><head/><body><p>" + Tr::tr(
|
useCdbConsole.setToolTip("<html><head/><body><p>" + Tr::tr(
|
||||||
@@ -261,57 +244,9 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
// Label text is intentional empty in the GUI.
|
// Label text is intentional empty in the GUI.
|
||||||
extraDumperFile.setToolTip(Tr::tr("Path to a Python file containing additional data dumpers."));
|
extraDumperFile.setToolTip(Tr::tr("Path to a Python file containing additional data dumpers."));
|
||||||
|
|
||||||
const QString t = Tr::tr("Stopping and stepping in the debugger "
|
|
||||||
"will automatically open views associated with the current location.") + '\n';
|
|
||||||
|
|
||||||
closeSourceBuffersOnExit.setSettingsKey(debugModeGroup, "CloseBuffersOnExit");
|
|
||||||
closeSourceBuffersOnExit.setLabelText(Tr::tr("Close temporary source views on debugger exit"));
|
|
||||||
closeSourceBuffersOnExit.setToolTip(t + Tr::tr("Closes automatically opened source views when the debugger exits."));
|
|
||||||
|
|
||||||
closeMemoryBuffersOnExit.setSettingsKey(debugModeGroup, "CloseMemoryBuffersOnExit");
|
|
||||||
closeMemoryBuffersOnExit.setDefaultValue(true);
|
|
||||||
closeMemoryBuffersOnExit.setLabelText(Tr::tr("Close temporary memory views on debugger exit"));
|
|
||||||
closeMemoryBuffersOnExit.setToolTip(t + Tr::tr("Closes automatically opened memory views when the debugger exits."));
|
|
||||||
|
|
||||||
switchModeOnExit.setSettingsKey(debugModeGroup, "SwitchModeOnExit");
|
|
||||||
switchModeOnExit.setLabelText(Tr::tr("Switch to previous mode on debugger exit"));
|
|
||||||
|
|
||||||
breakpointsFullPathByDefault.setSettingsKey(debugModeGroup, "BreakpointsFullPath");
|
|
||||||
breakpointsFullPathByDefault.setToolTip(Tr::tr("Enables a full file path in breakpoints by default also for GDB."));
|
|
||||||
breakpointsFullPathByDefault.setLabelText(Tr::tr("Set breakpoints using a full absolute path"));
|
|
||||||
|
|
||||||
raiseOnInterrupt.setSettingsKey(debugModeGroup, "RaiseOnInterrupt");
|
|
||||||
raiseOnInterrupt.setDefaultValue(true);
|
|
||||||
raiseOnInterrupt.setLabelText(Tr::tr("Bring %1 to foreground when application interrupts")
|
|
||||||
.arg(QGuiApplication::applicationDisplayName()));
|
|
||||||
|
|
||||||
autoQuit.setSettingsKey(debugModeGroup, "AutoQuit");
|
autoQuit.setSettingsKey(debugModeGroup, "AutoQuit");
|
||||||
autoQuit.setLabelText(Tr::tr("Automatically Quit Debugger"));
|
autoQuit.setLabelText(Tr::tr("Automatically Quit Debugger"));
|
||||||
|
|
||||||
useAnnotationsInMainEditor.setSettingsKey(debugModeGroup, "UseAnnotations");
|
|
||||||
useAnnotationsInMainEditor.setLabelText(Tr::tr("Use annotations in main editor when debugging"));
|
|
||||||
useAnnotationsInMainEditor.setToolTip(
|
|
||||||
"<p>"
|
|
||||||
+ Tr::tr("Shows simple variable values "
|
|
||||||
"as annotations in the main editor during debugging."));
|
|
||||||
useAnnotationsInMainEditor.setDefaultValue(true);
|
|
||||||
|
|
||||||
warnOnReleaseBuilds.setSettingsKey(debugModeGroup, "WarnOnReleaseBuilds");
|
|
||||||
warnOnReleaseBuilds.setDefaultValue(true);
|
|
||||||
warnOnReleaseBuilds.setLabelText(Tr::tr("Warn when debugging \"Release\" builds"));
|
|
||||||
warnOnReleaseBuilds.setToolTip(Tr::tr("Shows a warning when starting the debugger "
|
|
||||||
"on a binary with insufficient debug information."));
|
|
||||||
|
|
||||||
useToolTipsInMainEditor.setSettingsKey(debugModeGroup, "UseToolTips");
|
|
||||||
useToolTipsInMainEditor.setLabelText(Tr::tr("Use tooltips in main editor when debugging"));
|
|
||||||
useToolTipsInMainEditor.setToolTip(
|
|
||||||
"<p>"
|
|
||||||
+ 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.setSettingsKey(debugModeGroup, "UseToolTipsInLocalsView");
|
||||||
useToolTipsInLocalsView.setLabelText(Tr::tr("Use Tooltips in Locals View when Debugging"));
|
useToolTipsInLocalsView.setLabelText(Tr::tr("Use Tooltips in Locals View when Debugging"));
|
||||||
useToolTipsInLocalsView.setToolTip("<p>"
|
useToolTipsInLocalsView.setToolTip("<p>"
|
||||||
@@ -331,19 +266,6 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
"view during debugging."));
|
"view during debugging."));
|
||||||
useToolTipsInStackView.setDefaultValue(true);
|
useToolTipsInStackView.setDefaultValue(true);
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
|
||||||
registerForPostMortem = new RegisterPostMortemAction;
|
|
||||||
registerForPostMortem->setSettingsKey(debugModeGroup, "RegisterForPostMortem");
|
|
||||||
registerForPostMortem->setToolTip(Tr::tr("Registers %1 for debugging crashed applications.")
|
|
||||||
.arg(QGuiApplication::applicationDisplayName()));
|
|
||||||
registerForPostMortem->setLabelText(
|
|
||||||
Tr::tr("Use %1 for post-mortem debugging").arg(QGuiApplication::applicationDisplayName()));
|
|
||||||
#else
|
|
||||||
// Some dummy.
|
|
||||||
registerForPostMortem = new BoolAspect;
|
|
||||||
registerForPostMortem->setVisible(false);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
allPluginBreakpoints.setSettingsKey(debugModeGroup, "AllPluginBreakpoints");
|
allPluginBreakpoints.setSettingsKey(debugModeGroup, "AllPluginBreakpoints");
|
||||||
allPluginBreakpoints.setDefaultValue(true);
|
allPluginBreakpoints.setDefaultValue(true);
|
||||||
|
|
||||||
@@ -354,13 +276,6 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
selectedPluginBreakpointsPattern.setSettingsKey(debugModeGroup, "SelectedPluginBreakpointsPattern");
|
selectedPluginBreakpointsPattern.setSettingsKey(debugModeGroup, "SelectedPluginBreakpointsPattern");
|
||||||
selectedPluginBreakpointsPattern.setDefaultValue(QString(".*"));
|
selectedPluginBreakpointsPattern.setDefaultValue(QString(".*"));
|
||||||
|
|
||||||
maximalStackDepth.setSettingsKey(debugModeGroup, "MaximalStackDepth");
|
|
||||||
maximalStackDepth.setDefaultValue(20);
|
|
||||||
maximalStackDepth.setSpecialValueText(Tr::tr("<unlimited>"));
|
|
||||||
maximalStackDepth.setRange(0, 1000);
|
|
||||||
maximalStackDepth.setSingleStep(5);
|
|
||||||
maximalStackDepth.setLabelText(Tr::tr("Maximum stack depth:"));
|
|
||||||
|
|
||||||
displayStringLimit.setSettingsKey(debugModeGroup, "DisplayStringLimit");
|
displayStringLimit.setSettingsKey(debugModeGroup, "DisplayStringLimit");
|
||||||
displayStringLimit.setDefaultValue(300);
|
displayStringLimit.setDefaultValue(300);
|
||||||
displayStringLimit.setSpecialValueText(Tr::tr("<unlimited>"));
|
displayStringLimit.setSpecialValueText(Tr::tr("<unlimited>"));
|
||||||
@@ -400,35 +315,9 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
//
|
//
|
||||||
// QML Tools
|
// QML Tools
|
||||||
//
|
//
|
||||||
showQmlObjectTree.setSettingsKey(debugModeGroup, "ShowQmlObjectTree");
|
|
||||||
showQmlObjectTree.setDefaultValue(true);
|
|
||||||
showQmlObjectTree.setToolTip(Tr::tr("Shows QML object tree in Locals and Expressions "
|
|
||||||
"when connected and not stepping."));
|
|
||||||
showQmlObjectTree.setLabelText(Tr::tr("Show QML object tree"));
|
|
||||||
|
|
||||||
const QString qmlInspectorGroup = "QML.Inspector";
|
const QString qmlInspectorGroup = "QML.Inspector";
|
||||||
showAppOnTop.setSettingsKey(qmlInspectorGroup, "QmlInspector.ShowAppOnTop");
|
showAppOnTop.setSettingsKey(qmlInspectorGroup, "QmlInspector.ShowAppOnTop");
|
||||||
|
|
||||||
// Page 1
|
|
||||||
page1.registerAspect(&useAlternatingRowColors);
|
|
||||||
page1.registerAspect(&useAnnotationsInMainEditor);
|
|
||||||
page1.registerAspect(&useToolTipsInMainEditor);
|
|
||||||
page1.registerAspect(&closeSourceBuffersOnExit);
|
|
||||||
page1.registerAspect(&closeMemoryBuffersOnExit);
|
|
||||||
page1.registerAspect(&raiseOnInterrupt);
|
|
||||||
page1.registerAspect(&breakpointsFullPathByDefault);
|
|
||||||
page1.registerAspect(&warnOnReleaseBuilds);
|
|
||||||
page1.registerAspect(&maximalStackDepth);
|
|
||||||
|
|
||||||
page1.registerAspect(&fontSizeFollowsEditor);
|
|
||||||
page1.registerAspect(&switchModeOnExit);
|
|
||||||
page1.registerAspect(&showQmlObjectTree);
|
|
||||||
page1.registerAspect(&stationaryEditorWhileStepping);
|
|
||||||
page1.registerAspect(&forceLoggingToConsole);
|
|
||||||
|
|
||||||
page1.registerAspect(&sourcePathMap);
|
|
||||||
if (HostOsInfo::isWindowsHost())
|
|
||||||
page1.registerAspect(registerForPostMortem);
|
|
||||||
|
|
||||||
// Page 4
|
// Page 4
|
||||||
page4.registerAspect(&useDebuggingHelpers);
|
page4.registerAspect(&useDebuggingHelpers);
|
||||||
@@ -481,11 +370,6 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
DebuggerSettings::~DebuggerSettings()
|
|
||||||
{
|
|
||||||
delete registerForPostMortem;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DebuggerSettings::readSettings()
|
void DebuggerSettings::readSettings()
|
||||||
{
|
{
|
||||||
all.readSettings();
|
all.readSettings();
|
||||||
|
@@ -5,56 +5,39 @@
|
|||||||
|
|
||||||
#include <utils/aspects.h>
|
#include <utils/aspects.h>
|
||||||
|
|
||||||
#include <QCoreApplication>
|
|
||||||
#include <QHash>
|
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
|
||||||
namespace Debugger::Internal {
|
namespace Debugger::Internal {
|
||||||
|
|
||||||
class SourcePathMapAspectPrivate;
|
|
||||||
|
|
||||||
// Entries starting with '(' are considered regular expressions in the ElfReader.
|
|
||||||
// This is useful when there are multiple build machines with different
|
|
||||||
// path, and the user would like to match anything up to some known
|
|
||||||
// directory to his local project.
|
|
||||||
// Syntax: (/home/.*)/KnownSubdir -> /home/my/project
|
|
||||||
using SourcePathMap = QMap<QString, QString>;
|
|
||||||
|
|
||||||
class SourcePathMapAspect : public Utils::TypedAspect<SourcePathMap>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SourcePathMapAspect();
|
|
||||||
~SourcePathMapAspect() override;
|
|
||||||
|
|
||||||
void fromMap(const QVariantMap &map) override;
|
|
||||||
void toMap(QVariantMap &map) const override;
|
|
||||||
|
|
||||||
void addToLayout(Layouting::LayoutItem &parent) override;
|
|
||||||
|
|
||||||
void readSettings() override;
|
|
||||||
void writeSettings() const override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void guiToBuffer() override;
|
|
||||||
void bufferToGui() override;
|
|
||||||
|
|
||||||
SourcePathMapAspectPrivate *d = nullptr;
|
|
||||||
};
|
|
||||||
|
|
||||||
class GeneralSettings
|
|
||||||
{
|
|
||||||
GeneralSettings();
|
|
||||||
~GeneralSettings();
|
|
||||||
};
|
|
||||||
|
|
||||||
class DebuggerSettings
|
class DebuggerSettings
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit DebuggerSettings();
|
DebuggerSettings();
|
||||||
~DebuggerSettings();
|
|
||||||
|
|
||||||
static QString dump();
|
static QString dump();
|
||||||
|
|
||||||
|
// Page 1: General
|
||||||
|
Utils::BoolAspect &useAlternatingRowColors;
|
||||||
|
Utils::BoolAspect &useAnnotationsInMainEditor;
|
||||||
|
Utils::BoolAspect &useToolTipsInMainEditor;
|
||||||
|
Utils::BoolAspect &closeSourceBuffersOnExit;
|
||||||
|
Utils::BoolAspect &closeMemoryBuffersOnExit;
|
||||||
|
Utils::BoolAspect &raiseOnInterrupt;
|
||||||
|
Utils::BoolAspect &breakpointsFullPathByDefault;
|
||||||
|
Utils::BoolAspect &warnOnReleaseBuilds;
|
||||||
|
Utils::IntegerAspect &maximalStackDepth;
|
||||||
|
|
||||||
|
Utils::BoolAspect &fontSizeFollowsEditor;
|
||||||
|
Utils::BoolAspect &switchModeOnExit;
|
||||||
|
Utils::BoolAspect &showQmlObjectTree;
|
||||||
|
Utils::BoolAspect &stationaryEditorWhileStepping;
|
||||||
|
Utils::BoolAspect &forceLoggingToConsole;
|
||||||
|
|
||||||
|
Utils::TypedAspect<QMap<QString, QString>> &sourcePathMap;
|
||||||
|
|
||||||
|
Utils::BoolAspect ®isterForPostMortem;
|
||||||
|
|
||||||
|
// Page 2: Gdb
|
||||||
Utils::IntegerAspect &gdbWatchdogTimeout;
|
Utils::IntegerAspect &gdbWatchdogTimeout;
|
||||||
Utils::BoolAspect &skipKnownFrames;
|
Utils::BoolAspect &skipKnownFrames;
|
||||||
Utils::BoolAspect &useMessageBoxForSignals;
|
Utils::BoolAspect &useMessageBoxForSignals;
|
||||||
@@ -78,25 +61,6 @@ public:
|
|||||||
Utils::BoolAspect &enableReverseDebugging;
|
Utils::BoolAspect &enableReverseDebugging;
|
||||||
Utils::BoolAspect &multiInferior;
|
Utils::BoolAspect &multiInferior;
|
||||||
|
|
||||||
// Page 1: General
|
|
||||||
Utils::BoolAspect useAlternatingRowColors;
|
|
||||||
Utils::BoolAspect useAnnotationsInMainEditor;
|
|
||||||
Utils::BoolAspect useToolTipsInMainEditor;
|
|
||||||
Utils::BoolAspect closeSourceBuffersOnExit;
|
|
||||||
Utils::BoolAspect closeMemoryBuffersOnExit;
|
|
||||||
Utils::BoolAspect raiseOnInterrupt;
|
|
||||||
Utils::BoolAspect breakpointsFullPathByDefault;
|
|
||||||
Utils::BoolAspect warnOnReleaseBuilds;
|
|
||||||
Utils::IntegerAspect maximalStackDepth;
|
|
||||||
|
|
||||||
Utils::BoolAspect fontSizeFollowsEditor;
|
|
||||||
Utils::BoolAspect switchModeOnExit;
|
|
||||||
Utils::BoolAspect showQmlObjectTree;
|
|
||||||
Utils::BoolAspect stationaryEditorWhileStepping;
|
|
||||||
Utils::BoolAspect forceLoggingToConsole;
|
|
||||||
|
|
||||||
SourcePathMapAspect sourcePathMap;
|
|
||||||
|
|
||||||
// Page 4: Locals and expressions
|
// Page 4: Locals and expressions
|
||||||
Utils::BoolAspect useDebuggingHelpers;
|
Utils::BoolAspect useDebuggingHelpers;
|
||||||
Utils::BoolAspect useCodeModel;
|
Utils::BoolAspect useCodeModel;
|
||||||
@@ -119,8 +83,6 @@ public:
|
|||||||
Utils::BoolAspect secondChanceExceptionTaskEntry;
|
Utils::BoolAspect secondChanceExceptionTaskEntry;
|
||||||
Utils::BoolAspect ignoreFirstChanceAccessViolation;
|
Utils::BoolAspect ignoreFirstChanceAccessViolation;
|
||||||
|
|
||||||
Utils::BoolAspect *registerForPostMortem = nullptr;
|
|
||||||
|
|
||||||
// Page 6: CDB Paths
|
// Page 6: CDB Paths
|
||||||
Utils::StringListAspect cdbSymbolPaths;
|
Utils::StringListAspect cdbSymbolPaths;
|
||||||
Utils::StringListAspect cdbSourcePaths;
|
Utils::StringListAspect cdbSourcePaths;
|
||||||
@@ -172,6 +134,7 @@ private:
|
|||||||
|
|
||||||
DebuggerSettings &settings();
|
DebuggerSettings &settings();
|
||||||
|
|
||||||
} // Debugger::Internal
|
QString msgSetBreakpointAtFunction(const char *function);
|
||||||
|
QString msgSetBreakpointAtFunctionToolTip(const char *function, const QString &hint = {});
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(Debugger::Internal::SourcePathMap)
|
} // Debugger::Internal
|
||||||
|
@@ -2821,7 +2821,7 @@ void CppDebuggerEngine::validateRunParameters(DebuggerRunParameters &rp)
|
|||||||
bool hasEmbeddedInfo = elfData.indexOf(".debug_info") >= 0;
|
bool hasEmbeddedInfo = elfData.indexOf(".debug_info") >= 0;
|
||||||
bool hasLink = elfData.indexOf(".gnu_debuglink") >= 0;
|
bool hasLink = elfData.indexOf(".gnu_debuglink") >= 0;
|
||||||
if (hasEmbeddedInfo) {
|
if (hasEmbeddedInfo) {
|
||||||
const SourcePathMap sourcePathMap = settings().sourcePathMap();
|
const QMap<QString, QString> sourcePathMap = settings().sourcePathMap();
|
||||||
QList<QPair<QRegularExpression, QString>> globalRegExpSourceMap;
|
QList<QPair<QRegularExpression, QString>> globalRegExpSourceMap;
|
||||||
globalRegExpSourceMap.reserve(sourcePathMap.size());
|
globalRegExpSourceMap.reserve(sourcePathMap.size());
|
||||||
for (auto it = sourcePathMap.begin(), end = sourcePathMap.end(); it != end; ++it) {
|
for (auto it = sourcePathMap.begin(), end = sourcePathMap.end(); it != end; ++it) {
|
||||||
|
@@ -25,7 +25,6 @@
|
|||||||
#include "sourceutils.h"
|
#include "sourceutils.h"
|
||||||
#include "shared/hostutils.h"
|
#include "shared/hostutils.h"
|
||||||
#include "console/console.h"
|
#include "console/console.h"
|
||||||
|
|
||||||
#include "commonoptionspage.h"
|
#include "commonoptionspage.h"
|
||||||
|
|
||||||
#include "analyzer/analyzerconstants.h"
|
#include "analyzer/analyzerconstants.h"
|
||||||
@@ -697,7 +696,6 @@ public:
|
|||||||
std::unique_ptr<Perspective> m_perspectiveCmake;
|
std::unique_ptr<Perspective> m_perspectiveCmake;
|
||||||
|
|
||||||
DebuggerKitAspect debuggerKitAspect;
|
DebuggerKitAspect debuggerKitAspect;
|
||||||
CommonOptionsPage commonOptionsPage;
|
|
||||||
|
|
||||||
DebuggerRunWorkerFactory debuggerWorkerFactory;
|
DebuggerRunWorkerFactory debuggerWorkerFactory;
|
||||||
|
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "debuggersourcepathmappingwidget.h"
|
#include "debuggersourcepathmappingwidget.h"
|
||||||
|
|
||||||
#include "debuggeractions.h"
|
#include "commonoptionspage.h"
|
||||||
#include "debuggerengine.h"
|
#include "debuggerengine.h"
|
||||||
#include "debuggertr.h"
|
#include "debuggertr.h"
|
||||||
|
|
||||||
|
@@ -69,18 +69,18 @@ GdbSettings::GdbSettings()
|
|||||||
breakOnWarning.setLabelText(Tr::tr("Break on \"qWarning\""));
|
breakOnWarning.setLabelText(Tr::tr("Break on \"qWarning\""));
|
||||||
breakOnWarning.setSettingsKey("BreakOnWarning");
|
breakOnWarning.setSettingsKey("BreakOnWarning");
|
||||||
// FIXME: Move to common settings page.
|
// FIXME: Move to common settings page.
|
||||||
breakOnWarning.setLabelText(CommonOptionsPage::msgSetBreakpointAtFunction("qWarning"));
|
breakOnWarning.setLabelText(msgSetBreakpointAtFunction("qWarning"));
|
||||||
breakOnWarning.setToolTip(CommonOptionsPage::msgSetBreakpointAtFunctionToolTip("qWarning"));
|
breakOnWarning.setToolTip(msgSetBreakpointAtFunctionToolTip("qWarning"));
|
||||||
|
|
||||||
breakOnFatal.setLabelText(Tr::tr("Break on \"qFatal\""));
|
breakOnFatal.setLabelText(Tr::tr("Break on \"qFatal\""));
|
||||||
breakOnFatal.setSettingsKey("BreakOnFatal");
|
breakOnFatal.setSettingsKey("BreakOnFatal");
|
||||||
breakOnFatal.setLabelText(CommonOptionsPage::msgSetBreakpointAtFunction("qFatal"));
|
breakOnFatal.setLabelText(msgSetBreakpointAtFunction("qFatal"));
|
||||||
breakOnFatal.setToolTip(CommonOptionsPage::msgSetBreakpointAtFunctionToolTip("qFatal"));
|
breakOnFatal.setToolTip(msgSetBreakpointAtFunctionToolTip("qFatal"));
|
||||||
|
|
||||||
breakOnAbort.setLabelText(Tr::tr("Break on \"abort\""));
|
breakOnAbort.setLabelText(Tr::tr("Break on \"abort\""));
|
||||||
breakOnAbort.setSettingsKey("BreakOnAbort");
|
breakOnAbort.setSettingsKey("BreakOnAbort");
|
||||||
breakOnAbort.setLabelText(CommonOptionsPage::msgSetBreakpointAtFunction("abort"));
|
breakOnAbort.setLabelText(msgSetBreakpointAtFunction("abort"));
|
||||||
breakOnAbort.setToolTip(CommonOptionsPage::msgSetBreakpointAtFunctionToolTip("abort"));
|
breakOnAbort.setToolTip(msgSetBreakpointAtFunctionToolTip("abort"));
|
||||||
|
|
||||||
loadGdbInit.setSettingsKey("LoadGdbInit");
|
loadGdbInit.setSettingsKey("LoadGdbInit");
|
||||||
loadGdbInit.setDefaultValue(true);
|
loadGdbInit.setDefaultValue(true);
|
||||||
|
Reference in New Issue
Block a user