Commit 8108bb0c authored by Friedemann Kleint's avatar Friedemann Kleint
Browse files

Debugger[New CDB]: Ignore only first WOW64 breakpoint.

Subsequent ones are caused by interrupts.
parent 7d72445b
......@@ -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,10 +1463,16 @@ 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) {
*message = description;
return StopIgnoreContinue|StopReportLog;
if (m_wX86BreakpointCount++) {
*message = tr("Interrupted (%1)").arg(description);
return StopReportStatusMessage|StopNotifyStop;
} else {
*message = description;
return StopIgnoreContinue|StopReportLog;
}
}
if (isDebuggerWinException(exception.exceptionCode)) {
*message = msgInterrupted();
......
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment