diff options
author | Eike Ziller <eike.ziller@qt.io> | 2018-10-24 13:58:45 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2018-10-24 13:58:45 +0200 |
commit | fd7cba88ef249d087f0aa49135b70a3467cdf201 (patch) | |
tree | c0b89862640945912b79f2bf4ba41523e54fb52b /src/plugins/debugger/cdb | |
parent | bc5e640a46e8036edf93dd8ffe22785a9be59c03 (diff) | |
parent | d1430c9542d228606c27a0f1cbba38e0b3808fb7 (diff) | |
download | qt-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.cpp | 40 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdboptionspagewidget.ui | 2 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdbparsehelpers.cpp | 23 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdbparsehelpers.h | 2 |
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, |