diff options
author | Orgad Shaneh <[email protected]> | 2014-09-21 09:27:08 +0300 |
---|---|---|
committer | hjk <[email protected]> | 2014-09-26 20:58:46 +0200 |
commit | c218c051c6d2cfb1fbea9c8c658d2d0adc2cddf0 (patch) | |
tree | 215f872e759536b8913bbba24c1a88f19a8106b6 /src/plugins | |
parent | 38f2487a484ee201c7c90bf6388dd1cef590ab47 (diff) |
Debugger: Support variables for target
Useful for e.g. substituting any build dir to current project dir.
Change-Id: I50e8c101fa39bd45e55eef65776b18ef76bfd6ad
Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/debugger/debuggerengine.cpp | 12 | ||||
-rw-r--r-- | src/plugins/debugger/debuggersourcepathmappingwidget.cpp | 5 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 7c86043dd9c..840d640430f 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1830,9 +1830,17 @@ void DebuggerEngine::validateExecutable(DebuggerStartParameters *sp) bool hasEmbeddedInfo = elfData.indexOf(".debug_info") >= 0; bool hasLink = elfData.indexOf(".gnu_debuglink") >= 0; if (hasEmbeddedInfo) { + QSharedPointer<GlobalDebuggerOptions> options = debuggerCore()->globalDebuggerOptions(); + SourcePathRegExpMap globalRegExpSourceMap; + globalRegExpSourceMap.reserve(options->sourcePathRegExpMap.size()); + foreach (auto entry, options->sourcePathRegExpMap) { + const QString expanded = VariableManager::expandedString(entry.second); + if (!expanded.isEmpty()) + globalRegExpSourceMap.push_back(qMakePair(entry.first, expanded)); + } + if (globalRegExpSourceMap.isEmpty()) + return; if (QSharedPointer<Utils::ElfMapper> mapper = reader.readSection(".debug_str")) { - QSharedPointer<GlobalDebuggerOptions> options = debuggerCore()->globalDebuggerOptions(); - SourcePathRegExpMap globalRegExpSourceMap = options->sourcePathRegExpMap; const char *str = mapper->start; const char *limit = str + mapper->fdlen; while (str < limit) { diff --git a/src/plugins/debugger/debuggersourcepathmappingwidget.cpp b/src/plugins/debugger/debuggersourcepathmappingwidget.cpp index 34b1ce7277a..04d53bc948c 100644 --- a/src/plugins/debugger/debuggersourcepathmappingwidget.cpp +++ b/src/plugins/debugger/debuggersourcepathmappingwidget.cpp @@ -30,7 +30,10 @@ #include "debuggersourcepathmappingwidget.h" #include "debuggerstartparameters.h" +#include <coreplugin/variablechooser.h> + #include <utils/buildablehelperlibrary.h> +#include <utils/fancylineedit.h> #include <utils/pathchooser.h> #include <utils/qtcassert.h> #include <utils/synchronousprocess.h> @@ -205,6 +208,7 @@ DebuggerSourcePathMappingWidget::DebuggerSourcePathMappingWidget(QWidget *parent m_sourceLineEdit(new QLineEdit(this)), m_targetChooser(new PathChooser(this)) { + (void)new Core::VariableChooser(this); setTitle(tr("Source Paths Mapping")); setToolTip(tr("<html><head/><body><p>Mappings of source file folders to " "be used in the debugger can be entered here.</p>" @@ -270,6 +274,7 @@ DebuggerSourcePathMappingWidget::DebuggerSourcePathMappingWidget(QWidget *parent editTargetLabel->setBuddy(m_targetChooser); m_targetChooser->setToolTip(targetToolTip); editLayout->addRow(editTargetLabel, m_targetChooser); + Core::VariableChooser::addVariableSupport(m_targetChooser->lineEdit()); // Main layout QVBoxLayout *mainLayout = new QVBoxLayout; |