summaryrefslogtreecommitdiff
path: root/src/plugins/debugger
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/debugger')
-rw-r--r--src/plugins/debugger/cdb/cdboptionspagewidget.ui4
-rw-r--r--src/plugins/debugger/commonoptionspage.cpp12
-rw-r--r--src/plugins/debugger/debugger.qbs2
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp2
-rw-r--r--src/plugins/debugger/debuggerrunner.cpp24
-rw-r--r--src/plugins/debugger/gdb/gdboptionspage.cpp2
-rw-r--r--src/plugins/debugger/lldb/lldbengine.cpp20
-rw-r--r--src/plugins/debugger/lldb/lldbengine.h3
-rw-r--r--src/plugins/debugger/ptracepreload.qbs2
9 files changed, 45 insertions, 26 deletions
diff --git a/src/plugins/debugger/cdb/cdboptionspagewidget.ui b/src/plugins/debugger/cdb/cdboptionspagewidget.ui
index 7221f342e4..457123277f 100644
--- a/src/plugins/debugger/cdb/cdboptionspagewidget.ui
+++ b/src/plugins/debugger/cdb/cdboptionspagewidget.ui
@@ -44,7 +44,7 @@
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="consoleCheckBox">
<property name="toolTip">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use CDB's native console instead of Qt Creator's console for console applications. The native console does not prompt on application exit. It is suitable for diagnosing cases in which the application does not start up properly in Qt Creator's console and the subsequent attach fails.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Uses CDB's native console instead of Qt Creator's console for console applications. The native console does not prompt on application exit. It is suitable for diagnosing cases in which the application does not start up properly in Qt Creator's console and the subsequent attach fails.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Use CDB &amp;console</string>
@@ -82,7 +82,7 @@
<item>
<widget class="QCheckBox" name="breakpointCorrectionCheckBox">
<property name="toolTip">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to correct the location of a breakpoint based on file and line number should it be in a comment or in a line for which no code is generated. The correction is based on the code model.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempts to correct the location of a breakpoint based on file and line number should it be in a comment or in a line for which no code is generated. The correction is based on the code model.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Correct breakpoint location</string>
diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp
index bd4fe189e3..93e7586bf2 100644
--- a/src/plugins/debugger/commonoptionspage.cpp
+++ b/src/plugins/debugger/commonoptionspage.cpp
@@ -58,14 +58,14 @@ CommonOptionsPageWidget::CommonOptionsPageWidget
checkBoxUseAlternatingRowColors->setText(tr("Use alternating row colors in debug views"));
checkBoxFontSizeFollowsEditor = new QCheckBox(behaviorBox);
- checkBoxFontSizeFollowsEditor->setToolTip(tr("Change the font size in the debugger views when the font size in the main editor changes."));
+ checkBoxFontSizeFollowsEditor->setToolTip(tr("Changes the font size in the debugger views when the font size in the main editor changes."));
checkBoxFontSizeFollowsEditor->setText(tr("Debugger font size follows main editor"));
checkBoxUseToolTipsInMainEditor = new QCheckBox(behaviorBox);
checkBoxUseToolTipsInMainEditor->setText(tr("Use tooltips in main editor while debugging"));
checkBoxListSourceFiles = new QCheckBox(behaviorBox);
- checkBoxListSourceFiles->setToolTip(tr("Populate the source file view automatically. This might slow down debugger startup considerably."));
+ checkBoxListSourceFiles->setToolTip(tr("Populates the source file view automatically. This might slow down debugger startup considerably."));
checkBoxListSourceFiles->setText(tr("Populate source file view automatically"));
checkBoxCloseBuffersOnExit = new QCheckBox(behaviorBox);
@@ -82,20 +82,20 @@ CommonOptionsPageWidget::CommonOptionsPageWidget
checkBoxBringToForegroundOnInterrrupt->setText(tr("Bring Qt Creator to foreground when application interrupts"));
checkBoxShowQmlObjectTree = new QCheckBox(behaviorBox);
- checkBoxShowQmlObjectTree->setToolTip(tr("Show QML object tree in Locals & Expressions when connected and not stepping."));
+ checkBoxShowQmlObjectTree->setToolTip(tr("Shows QML object tree in Locals & Expressions when connected and not stepping."));
checkBoxShowQmlObjectTree->setText(tr("Show QML object tree"));
checkBoxBreakpointsFullPath = new QCheckBox(behaviorBox);
- checkBoxBreakpointsFullPath->setToolTip(tr("Enable a full file path in breakpoints by default also for GDB."));
+ checkBoxBreakpointsFullPath->setToolTip(tr("Enables a full file path in breakpoints by default also for GDB."));
checkBoxBreakpointsFullPath->setText(tr("Set breakpoints using a full absolute path"));
checkBoxRegisterForPostMortem = new QCheckBox(behaviorBox);
- checkBoxRegisterForPostMortem->setToolTip(tr("Register Qt Creator for debugging crashed applications."));
+ checkBoxRegisterForPostMortem->setToolTip(tr("Registers Qt Creator for debugging crashed applications."));
checkBoxRegisterForPostMortem->setText(tr("Use Qt Creator for post-mortem debugging"));
checkBoxWarnOnReleaseBuilds = new QCheckBox(behaviorBox);
checkBoxWarnOnReleaseBuilds->setText(tr("Warn when debugging \"Release\" builds"));
- checkBoxWarnOnReleaseBuilds->setToolTip(tr("Show a warning when starting the debugger "
+ checkBoxWarnOnReleaseBuilds->setToolTip(tr("Shows a warning when starting the debugger "
"on a binary with insufficient debug information."));
labelMaximalStackDepth = new QLabel(tr("Maximum stack depth:"), behaviorBox);
diff --git a/src/plugins/debugger/debugger.qbs b/src/plugins/debugger/debugger.qbs
index d8b66490a7..4cd091e42b 100644
--- a/src/plugins/debugger/debugger.qbs
+++ b/src/plugins/debugger/debugger.qbs
@@ -1,4 +1,4 @@
-import qbs.base 1.0
+import qbs 1.0
import QtcPlugin
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index b4160c8375..2b381184b4 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1739,7 +1739,7 @@ DebuggerRunControl *DebuggerPluginPrivate::attachToRunningProcess(Kit *kit,
if (device->type() != PE::DESKTOP_DEVICE_TYPE) {
QMessageBox::warning(ICore::mainWindow(), tr("Not a Desktop Device Type"),
- tr("It is only possible to attach to local running process."));
+ tr("It is only possible to attach to a locally running process."));
return 0;
}
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 91bd58cc1c..781602ddf0 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -193,26 +193,28 @@ void DebuggerRunControl::start()
}
if (d->m_engine->startParameters().startMode == StartInternal) {
+ QStringList unhandledIds;
foreach (const BreakpointModelId &id, debuggerCore()->breakHandler()->allBreakpointIds()) {
if (d->m_engine->breakHandler()->breakpointData(id).enabled
- && !d->m_engine->acceptsBreakpoint(id)) {
-
- QString warningMessage =
- DebuggerPlugin::tr("Some breakpoints cannot be handled by the debugger "
- "languages currently active, and will be ignored.");
+ && !d->m_engine->acceptsBreakpoint(id))
+ unhandledIds.append(id.toString());
+ }
+ if (!unhandledIds.isEmpty()) {
+ QString warningMessage =
+ DebuggerPlugin::tr("Some breakpoints cannot be handled by the debugger "
+ "languages currently active, and will be ignored.\n"
+ "Affected are breakpoints %1")
+ .arg(unhandledIds.join(QLatin1String(", ")));
- debuggerCore()->showMessage(warningMessage, LogWarning);
+ debuggerCore()->showMessage(warningMessage, LogWarning);
- static bool checked = true;
- if (!checked)
- break;
+ static bool checked = true;
+ if (checked)
CheckableMessageBox::information(Core::ICore::mainWindow(),
tr("Debugger"),
warningMessage,
tr("&Show this message again."),
&checked, QDialogButtonBox::Ok);
- break;
- }
}
}
diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp
index 719778a743..5836ecf302 100644
--- a/src/plugins/debugger/gdb/gdboptionspage.cpp
+++ b/src/plugins/debugger/gdb/gdboptionspage.cpp
@@ -152,7 +152,7 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
checkBoxLoadGdbDumpers->setText(GdbOptionsPage::tr("Load system GDB pretty printers"));
checkBoxLoadGdbDumpers->setToolTip(GdbOptionsPage::tr(
"Uses the default GDB pretty printers installed in your "
- "system or linked to the libraries your application uses.\n"));
+ "system or linked to the libraries your application uses."));
checkBoxIntelFlavor = new QCheckBox(groupBoxGeneral);
checkBoxIntelFlavor->setText(GdbOptionsPage::tr("Use Intel style disassembly"));
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index d2bad378b1..ad61ccacf8 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -108,7 +108,7 @@ LldbEngine::LldbEngine(const DebuggerStartParameters &startParameters)
connect(debuggerCore()->action(AutoDerefPointers), SIGNAL(valueChanged(QVariant)),
SLOT(updateLocals()));
connect(debuggerCore()->action(CreateFullBacktrace), SIGNAL(triggered()),
- SLOT(updateAll()));
+ SLOT(createFullBacktrace()));
connect(debuggerCore()->action(UseDebuggingHelpers), SIGNAL(valueChanged(QVariant)),
SLOT(updateLocals()));
connect(debuggerCore()->action(UseDynamicType), SIGNAL(valueChanged(QVariant)),
@@ -320,7 +320,6 @@ void LldbEngine::setupInferior()
}
runCommand(cmd);
- updateLocals(); // update display options
}
void LldbEngine::runEngine()
@@ -433,6 +432,8 @@ void LldbEngine::handleResponse(const QByteArray &response)
refreshMemory(item);
else if (name == "continuation")
runContinuation(item);
+ else if (name == "full-backtrace")
+ showFullBacktrace(item);
else if (name == "statusmessage") {
QString msg = QString::fromUtf8(item.data());
if (msg.size())
@@ -442,6 +443,12 @@ void LldbEngine::handleResponse(const QByteArray &response)
}
}
+void LldbEngine::showFullBacktrace(const GdbMi &data)
+{
+ debuggerCore()->openTextEditor(_("Backtrace $"),
+ QString::fromUtf8(QByteArray::fromHex(data.data())));
+}
+
void LldbEngine::runContinuation(const GdbMi &data)
{
const QByteArray target = data.data();
@@ -493,6 +500,8 @@ void LldbEngine::activateFrame(int frameIndex)
cmd.arg("thread", threadsHandler()->currentThread().raw());
cmd.arg("stacklimit", limit);
runCommand(cmd);
+
+ updateAll();
}
void LldbEngine::selectThread(ThreadId threadId)
@@ -872,6 +881,7 @@ bool LldbEngine::setToolTipExpression(const QPoint &mousePos,
void LldbEngine::updateAll()
{
+ reloadRegisters();
updateLocals();
}
@@ -1181,6 +1191,8 @@ void LldbEngine::refreshState(const GdbMi &reportedState)
if (m_continueAtNextSpontaneousStop) {
m_continueAtNextSpontaneousStop = false;
continueInferior();
+ } else {
+ updateAll();
}
} else if (newState == "inferiorstopok")
notifyInferiorStopOk();
@@ -1248,6 +1260,10 @@ void LldbEngine::fetchDisassembler(DisassemblerAgent *agent)
runCommand(cmd);
}
+void LldbEngine::createFullBacktrace()
+{
+ runCommand("createFullBacktrace");
+}
void LldbEngine::fetchMemory(MemoryAgent *agent, QObject *editorToken,
quint64 addr, quint64 length)
diff --git a/src/plugins/debugger/lldb/lldbengine.h b/src/plugins/debugger/lldb/lldbengine.h
index df6c132ed1..f8ba142094 100644
--- a/src/plugins/debugger/lldb/lldbengine.h
+++ b/src/plugins/debugger/lldb/lldbengine.h
@@ -162,6 +162,7 @@ private:
Q_SLOT void runEngine2();
Q_SLOT void updateAll();
Q_SLOT void updateLocals();
+ Q_SLOT void createFullBacktrace();
void doUpdateLocals(UpdateParameters params);
void refreshAll(const GdbMi &all);
void refreshThreads(const GdbMi &threads);
@@ -181,10 +182,10 @@ private:
void refreshChangedBreakpoint(const GdbMi &bkpts);
void refreshRemovedBreakpoint(const GdbMi &bkpts);
void runContinuation(const GdbMi &data);
+ void showFullBacktrace(const GdbMi &data);
typedef void (LldbEngine::*LldbCommandContinuation)();
- void handleStop(const QByteArray &response);
void handleListLocals(const QByteArray &response);
void handleListModules(const QByteArray &response);
void handleListSymbols(const QByteArray &response);
diff --git a/src/plugins/debugger/ptracepreload.qbs b/src/plugins/debugger/ptracepreload.qbs
index 0f31a6c55d..90a323d4d5 100644
--- a/src/plugins/debugger/ptracepreload.qbs
+++ b/src/plugins/debugger/ptracepreload.qbs
@@ -1,4 +1,4 @@
-import qbs.base 1.0
+import qbs 1.0
import QtcLibrary
QtcLibrary {