forked from qt-creator/qt-creator
Debugger[New CDB]: Ignore only first WOW64 breakpoint.
Subsequent ones are caused by interrupts.
This commit is contained in:
@@ -352,7 +352,8 @@ CdbEngine::CdbEngine(const DebuggerStartParameters &sp,
|
||||
m_notifyEngineShutdownOnTermination(false),
|
||||
m_hasDebuggee(false),
|
||||
m_elapsedLogTime(0),
|
||||
m_sourceStepInto(false)
|
||||
m_sourceStepInto(false),
|
||||
m_wX86BreakpointCount(0)
|
||||
{
|
||||
Utils::SavedAction *assemblerAction = theAssemblerAction();
|
||||
m_operateByInstructionPending = assemblerAction->isChecked();
|
||||
@@ -1430,7 +1431,7 @@ enum StopActionFlags
|
||||
|
||||
unsigned CdbEngine::examineStopReason(const QByteArray &messageIn,
|
||||
QString *message,
|
||||
QString *exceptionBoxMessage) const
|
||||
QString *exceptionBoxMessage)
|
||||
{
|
||||
// Report stop reason (GDBMI)
|
||||
GdbMi stopReason;
|
||||
@@ -1462,11 +1463,17 @@ unsigned CdbEngine::examineStopReason(const QByteArray &messageIn,
|
||||
// pulls DLLs. Avoid showing a 'stopped' Message box.
|
||||
if (exception.exceptionCode == winExceptionStartupCompleteTrap)
|
||||
return StopNotifyStop;
|
||||
// WOW 64 breakpoint: just report in log and continue
|
||||
// WOW 64 breakpoint: Report in log and continue the first one,
|
||||
// subsequent ones are caused by interrupting the application.
|
||||
if (exception.exceptionCode == winExceptionWX86Breakpoint) {
|
||||
if (m_wX86BreakpointCount++) {
|
||||
*message = tr("Interrupted (%1)").arg(description);
|
||||
return StopReportStatusMessage|StopNotifyStop;
|
||||
} else {
|
||||
*message = description;
|
||||
return StopIgnoreContinue|StopReportLog;
|
||||
}
|
||||
}
|
||||
if (isDebuggerWinException(exception.exceptionCode)) {
|
||||
*message = msgInterrupted();
|
||||
return StopReportStatusMessage|StopNotifyStop;
|
||||
|
||||
@@ -153,7 +153,7 @@ private:
|
||||
enum SpecialStopMode { NoSpecialStop, SpecialStopSynchronizeBreakpoints };
|
||||
|
||||
unsigned examineStopReason(const QByteArray &messageIn, QString *message,
|
||||
QString *exceptionBoxMessage) const;
|
||||
QString *exceptionBoxMessage);
|
||||
bool commandsPending() const;
|
||||
void handleExtensionMessage(char t, int token, const QByteArray &what, const QByteArray &message);
|
||||
bool doSetupEngine(QString *errorMessage);
|
||||
@@ -214,6 +214,7 @@ private:
|
||||
mutable int m_elapsedLogTime;
|
||||
QByteArray m_extensionMessageBuffer;
|
||||
bool m_sourceStepInto;
|
||||
unsigned m_wX86BreakpointCount;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
Reference in New Issue
Block a user