summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/cdb
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2018-10-24 13:58:45 +0200
committerEike Ziller <eike.ziller@qt.io>2018-10-24 13:58:45 +0200
commitfd7cba88ef249d087f0aa49135b70a3467cdf201 (patch)
treec0b89862640945912b79f2bf4ba41523e54fb52b /src/plugins/debugger/cdb
parentbc5e640a46e8036edf93dd8ffe22785a9be59c03 (diff)
parentd1430c9542d228606c27a0f1cbba38e0b3808fb7 (diff)
downloadqt-creator-fd7cba88ef249d087f0aa49135b70a3467cdf201.tar.gz
Merge remote-tracking branch 'origin/4.8'
Conflicts: doc/src/editors/creator-only/creator-code-pasting.qdoc src/plugins/android/androidbuildapkwidget.cpp Change-Id: Iea8b7135643d14ffe49d10b14bedb8fa5ac48063
Diffstat (limited to 'src/plugins/debugger/cdb')
-rw-r--r--src/plugins/debugger/cdb/cdbengine.cpp40
-rw-r--r--src/plugins/debugger/cdb/cdboptionspagewidget.ui2
-rw-r--r--src/plugins/debugger/cdb/cdbparsehelpers.cpp23
-rw-r--r--src/plugins/debugger/cdb/cdbparsehelpers.h2
4 files changed, 32 insertions, 35 deletions
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index 70a6b90914..98d9145d01 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -610,7 +610,7 @@ void CdbEngine::runEngine()
const auto cb = [this](const DebuggerResponse &r) { handleBreakInsert(r, Breakpoint()); };
if (boolSetting(CdbBreakOnCrtDbgReport)) {
Abi::OSFlavor flavor = runParameters().toolChainAbi.osFlavor();
- // CrtDebugReport can not be safely resolved for vc 19
+ // CrtDebugReport cannot be safely resolved for vc 19
if ((flavor > Abi::WindowsMsvc2005Flavor && flavor <= Abi::WindowsMsvc2013Flavor) ||
flavor > Abi::WindowsMSysFlavor || flavor <= Abi::WindowsCEFlavor) {
const QString module = msvcRunTime(flavor);
@@ -743,18 +743,23 @@ static inline bool isWatchIName(const QString &iname)
bool CdbEngine::hasCapability(unsigned cap) const
{
- return cap & (DisassemblerCapability | RegisterCapability
- | ShowMemoryCapability
- |WatchpointByAddressCapability|JumpToLineCapability|AddWatcherCapability|WatchWidgetsCapability
- |ReloadModuleCapability
- |BreakOnThrowAndCatchCapability // Sort-of: Can break on throw().
- |BreakConditionCapability|TracePointCapability
- |BreakModuleCapability
- |CreateFullBacktraceCapability
- |OperateByInstructionCapability
- |RunToLineCapability
- |MemoryAddressCapability
- |AdditionalQmlStackCapability);
+ return cap & (DisassemblerCapability
+ | RegisterCapability
+ | ShowMemoryCapability
+ | WatchpointByAddressCapability
+ | JumpToLineCapability
+ | AddWatcherCapability
+ | WatchWidgetsCapability
+ | ReloadModuleCapability
+ | BreakOnThrowAndCatchCapability // Sort-of: Can break on throw().
+ | BreakConditionCapability|TracePointCapability
+ | BreakIndividualLocationsCapability
+ | BreakModuleCapability
+ | CreateFullBacktraceCapability
+ | OperateByInstructionCapability
+ | RunToLineCapability
+ | MemoryAddressCapability
+ | AdditionalQmlStackCapability);
}
void CdbEngine::executeStepIn(bool byInstruction)
@@ -832,6 +837,7 @@ void CdbEngine::handleDoInterruptInferior(const QString &errorMessage)
void CdbEngine::doInterruptInferior(const InterruptCallback &callback)
{
+ const bool requestInterrupt = m_stopMode == NoStopRequested;
if (callback) {
m_interrupCallbacks.push_back(callback);
if (!m_initialSessionIdleHandled)
@@ -842,6 +848,8 @@ void CdbEngine::doInterruptInferior(const InterruptCallback &callback)
m_stopMode = Interrupt;
}
+ if (!requestInterrupt)
+ return; // we already requested a stop no need to interrupt twice
showMessage(QString("Interrupting process %1...").arg(inferiorPid()), LogMisc);
QTC_ASSERT(!m_signalOperation, notifyInferiorStopFailed(); return);
QTC_ASSERT(device(), notifyInferiorRunFailed(); return);
@@ -2489,7 +2497,7 @@ void CdbEngine::insertBreakpoint(const Breakpoint &bp)
BreakpointParameters parameters = bp->requestedParameters();
const auto handleBreakInsertCB = [this, bp](const DebuggerResponse &r) { handleBreakInsert(r, bp); };
BreakpointParameters response = parameters;
- auto responseId = QString::number(breakPointIdToCdbId(bp));
+ const QString responseId = breakPointCdbId(bp);
QScopedPointer<BreakpointCorrectionContext> lineCorrection(
new BreakpointCorrectionContext(m_codeModelSnapshot, CppTools::CppModelManager::instance()->workingCopy()));
if (!m_autoBreakPointCorrection
@@ -2536,7 +2544,7 @@ void CdbEngine::updateBreakpoint(const Breakpoint &bp)
BreakpointParameters parameters = bp->requestedParameters();
const auto handleBreakInsertCB = [this, bp](const DebuggerResponse &r) { handleBreakInsert(r, bp); };
BreakpointParameters response = parameters;
- auto responseId = QString::number(breakPointIdToCdbId(bp));
+ const QString responseId = breakPointCdbId(bp);
notifyBreakpointChangeProceeding(bp);
if (debugBreakpoints)
qDebug("Changing %d:\n %s\nTo %s\n", bp->modelId(),
@@ -2745,7 +2753,7 @@ void CdbEngine::setupScripting(const DebuggerResponse &response)
}
if (!ok) {
m_pythonVersion = 0;
- showMessage(QString("Can not parse sys.version:\n%1").arg(verOutput), LogWarning);
+ showMessage(QString("Cannot parse sys.version:\n%1").arg(verOutput), LogWarning);
return;
}
diff --git a/src/plugins/debugger/cdb/cdboptionspagewidget.ui b/src/plugins/debugger/cdb/cdboptionspagewidget.ui
index e6d5646dea..345b85c756 100644
--- a/src/plugins/debugger/cdb/cdboptionspagewidget.ui
+++ b/src/plugins/debugger/cdb/cdboptionspagewidget.ui
@@ -106,7 +106,7 @@
<item>
<widget class="QGroupBox" name="exceptions">
<property name="title">
- <string>Task Entries for Exceptions </string>
+ <string>Add Exceptions to Issues View</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
diff --git a/src/plugins/debugger/cdb/cdbparsehelpers.cpp b/src/plugins/debugger/cdb/cdbparsehelpers.cpp
index f91ef45261..58047ce12f 100644
--- a/src/plugins/debugger/cdb/cdbparsehelpers.cpp
+++ b/src/plugins/debugger/cdb/cdbparsehelpers.cpp
@@ -128,25 +128,14 @@ static BreakpointParameters fixWinMSVCBreakpoint(const BreakpointParameters &p)
return p;
}
-int breakPointIdToCdbId(const Breakpoint &bp)
+QString breakPointCdbId(const Breakpoint &bp)
{
-// return cdbBreakPointStartId + bp.majorPart() * cdbBreakPointIdMinorPart + bp.minorPart();
+ static int bpId = 1;
if (!bp->responseId().isEmpty())
- return bp->responseId().toInt();
- return cdbBreakPointStartId + bp->modelId() * cdbBreakPointIdMinorPart;
+ return bp->responseId();
+ return QString::number(cdbBreakPointStartId + (bpId++) * cdbBreakPointIdMinorPart);
}
-//static int cdbIdToBreakpointModel(int cdbid)
-//{
-// if (cdbid >= cdbBreakPointStartId) {
-// int major = (cdbid - cdbBreakPointStartId) / cdbBreakPointIdMinorPart;
-// int minor = cdbid % cdbBreakPointIdMinorPart;
-// (void) minor;
-// return major;
-// }
-// return 0;
-//}
-
QString cdbAddBreakpointCommand(const BreakpointParameters &bpIn,
const QList<QPair<QString, QString> > &sourcePathMapping,
const QString &responseId,
@@ -212,11 +201,11 @@ QString cdbAddBreakpointCommand(const BreakpointParameters &bpIn,
QString cdbClearBreakpointCommand(const Breakpoint &bp)
{
// FIME: Check
-// const int firstBreakPoint = breakPointIdToCdbId(id);
+// const int firstBreakPoint = breakPointCdbId(id);
// if (id.isMinor())
// return "bc " + QString::number(firstBreakPoint);
// If this is a major break point we also want to delete all sub break points
- const int firstBreakPoint = cdbBreakPointStartId + bp->modelId() * cdbBreakPointIdMinorPart;
+ const int firstBreakPoint = bp->responseId().toInt();
const int lastBreakPoint = firstBreakPoint + cdbBreakPointIdMinorPart - 1;
return "bc " + QString::number(firstBreakPoint) + '-' + QString::number(lastBreakPoint);
}
diff --git a/src/plugins/debugger/cdb/cdbparsehelpers.h b/src/plugins/debugger/cdb/cdbparsehelpers.h
index 73b480b69e..6bf0efa160 100644
--- a/src/plugins/debugger/cdb/cdbparsehelpers.h
+++ b/src/plugins/debugger/cdb/cdbparsehelpers.h
@@ -53,7 +53,7 @@ QString cdbSourcePathMapping(QString fileName,
enum { cdbBreakPointStartId = 100000,
cdbBreakPointIdMinorPart = 100};
-int breakPointIdToCdbId(const Breakpoint &bp);
+QString breakPointCdbId(const Breakpoint &bp);
// Convert breakpoint in CDB syntax (applying source path mappings using native paths).
QString cdbAddBreakpointCommand(const BreakpointParameters &d,