From e157ac82a1cfea8396816e9293c101fbfd2d38de Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 17 Jul 2023 17:20:59 +0200 Subject: [PATCH] Debugger: Paddle back on multiple inheritance for settings This is fairly close to the new "standard" pattern for an individual page but still allows flat access using the same 'settings().' stanza. Change-Id: I1edbbd64a857a3d3936fb2c21fdc7e3c8ae7a44c Reviewed-by: Christian Stenger Reviewed-by: --- src/plugins/debugger/debuggeractions.cpp | 26 +++++++++++++++++--- src/plugins/debugger/debuggeractions.h | 28 +++++++++++++++++++--- src/plugins/debugger/disassembleragent.cpp | 2 -- src/plugins/debugger/gdb/gdbsettings.cpp | 28 +++++++++++++++++++--- src/plugins/debugger/gdb/gdbsettings.h | 6 +++-- src/plugins/debugger/lldb/lldbengine.cpp | 1 - 6 files changed, 77 insertions(+), 14 deletions(-) diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp index e4026bca81d..aaf9971a623 100644 --- a/src/plugins/debugger/debuggeractions.cpp +++ b/src/plugins/debugger/debuggeractions.cpp @@ -7,6 +7,7 @@ #include "debuggericons.h" #include "debuggerinternalconstants.h" #include "debuggertr.h" +#include "gdb/gdbsettings.h" #ifdef Q_OS_WIN #include "registerpostmortemaction.h" @@ -39,7 +40,28 @@ DebuggerSettings &settings() return settings; } -DebuggerSettings::DebuggerSettings() +DebuggerSettings::DebuggerSettings() : + gdbWatchdogTimeout{gdbSettings().gdbWatchdogTimeout}, + skipKnownFrames{gdbSettings().skipKnownFrames}, + useMessageBoxForSignals{gdbSettings().useMessageBoxForSignals}, + adjustBreakpointLocations{gdbSettings().adjustBreakpointLocations}, + useDynamicType{gdbSettings().useDynamicType}, + loadGdbInit{gdbSettings().loadGdbInit}, + loadGdbDumpers{gdbSettings().loadGdbDumpers}, + intelFlavor{gdbSettings().intelFlavor}, + usePseudoTracepoints{gdbSettings().usePseudoTracepoints}, + useIndexCache{gdbSettings().useIndexCache}, + gdbStartupCommands{gdbSettings().gdbStartupCommands}, + gdbPostAttachCommands{gdbSettings().gdbPostAttachCommands}, + targetAsync{gdbSettings().targetAsync}, + autoEnrichParameters{gdbSettings().autoEnrichParameters}, + breakOnThrow{gdbSettings().breakOnThrow}, + breakOnCatch{gdbSettings().breakOnCatch}, + breakOnWarning{gdbSettings().breakOnWarning}, + breakOnFatal{gdbSettings().breakOnFatal}, + breakOnAbort{gdbSettings().breakOnAbort}, + enableReverseDebugging{gdbSettings().enableReverseDebugging}, + multiInferior{gdbSettings().multiInferior} { const QString debugModeGroup(debugModeSettingsGroupC); const QString cdbSettingsGroup(cdbSettingsGroupC); @@ -467,13 +489,11 @@ DebuggerSettings::~DebuggerSettings() void DebuggerSettings::readSettings() { all.readSettings(); - GdbSettings::readSettings(); } void DebuggerSettings::writeSettings() const { all.writeSettings(); - GdbSettings::writeSettings(); } QString DebuggerSettings::dump() diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h index c4f8c235532..063967dc90f 100644 --- a/src/plugins/debugger/debuggeractions.h +++ b/src/plugins/debugger/debuggeractions.h @@ -3,12 +3,11 @@ #pragma once -#include "gdb/gdbsettings.h" +#include #include #include #include -#include namespace Debugger::Internal { @@ -48,7 +47,7 @@ class GeneralSettings ~GeneralSettings(); }; -class DebuggerSettings : public GdbSettings +class DebuggerSettings { public: explicit DebuggerSettings(); @@ -56,6 +55,29 @@ public: static QString dump(); + Utils::IntegerAspect &gdbWatchdogTimeout; + Utils::BoolAspect &skipKnownFrames; + Utils::BoolAspect &useMessageBoxForSignals; + Utils::BoolAspect &adjustBreakpointLocations; + Utils::BoolAspect &useDynamicType; + Utils::BoolAspect &loadGdbInit; + Utils::BoolAspect &loadGdbDumpers; + Utils::BoolAspect &intelFlavor; + Utils::BoolAspect &usePseudoTracepoints; + Utils::BoolAspect &useIndexCache; + Utils::StringAspect &gdbStartupCommands; + Utils::StringAspect &gdbPostAttachCommands; + + Utils::BoolAspect &targetAsync; + Utils::BoolAspect &autoEnrichParameters; + Utils::BoolAspect &breakOnThrow; + Utils::BoolAspect &breakOnCatch; + Utils::BoolAspect &breakOnWarning; + Utils::BoolAspect &breakOnFatal; + Utils::BoolAspect &breakOnAbort; + Utils::BoolAspect &enableReverseDebugging; + Utils::BoolAspect &multiInferior; + // Page 1: General Utils::BoolAspect useAlternatingRowColors; Utils::BoolAspect useAnnotationsInMainEditor; diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp index b393fe44da2..afe08e2d1fe 100644 --- a/src/plugins/debugger/disassembleragent.cpp +++ b/src/plugins/debugger/disassembleragent.cpp @@ -20,12 +20,10 @@ #include #include -#include #include #include #include -#include using namespace Core; using namespace TextEditor; diff --git a/src/plugins/debugger/gdb/gdbsettings.cpp b/src/plugins/debugger/gdb/gdbsettings.cpp index 2adeeb7931a..31c8e3f6912 100644 --- a/src/plugins/debugger/gdb/gdbsettings.cpp +++ b/src/plugins/debugger/gdb/gdbsettings.cpp @@ -3,6 +3,8 @@ #include "gdbsettings.h" +#include + #include #include #include @@ -18,11 +20,15 @@ using namespace Utils; namespace Debugger::Internal { +GdbSettings &gdbSettings() +{ + static GdbSettings settings; + return settings; +} + GdbSettings::GdbSettings() { - setId("M.Gdb"); - setDisplayName(Tr::tr("GDB")); - setCategory(Constants::DEBUGGER_SETTINGS_CATEGORY); + setAutoApply(false); setSettingsGroup("DebugMode"); useMessageBoxForSignals.setSettingsKey("UseMessageBoxForSignals"); @@ -250,4 +256,20 @@ GdbSettings::GdbSettings() readSettings(); } +// GdbSettingsPage + +class GdbSettingsPage final : public Core::IOptionsPage +{ +public: + GdbSettingsPage() + { + setId("M.Gdb"); + setDisplayName(Tr::tr("GDB")); + setCategory(Constants::DEBUGGER_SETTINGS_CATEGORY); + setSettingsProvider([] { return &gdbSettings(); }); + } +}; + +const GdbSettingsPage settingsPage; + } // Debugger::Internal diff --git a/src/plugins/debugger/gdb/gdbsettings.h b/src/plugins/debugger/gdb/gdbsettings.h index d04e89eb966..73c2646e1ca 100644 --- a/src/plugins/debugger/gdb/gdbsettings.h +++ b/src/plugins/debugger/gdb/gdbsettings.h @@ -3,11 +3,11 @@ #pragma once -#include +#include namespace Debugger::Internal { -class GdbSettings : public Core::PagedSettings +class GdbSettings : public Utils::AspectContainer { public: GdbSettings(); @@ -36,4 +36,6 @@ public: Utils::BoolAspect multiInferior{this}; }; +GdbSettings &gdbSettings(); + } // Debugger::Internal diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 73025062503..2d90f1e76c9 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include