Debugger: Prevent adding invalid breakpoints.

Check on session restore and add.
In particular, suppress watchpoints at 0x0,
which hang gdb.

Change-Id: I648f53a709fabdebe641e478f367f1354a315ab1
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Friedemann Kleint
2011-10-20 10:45:59 +02:00
committed by hjk
parent 7348291514
commit 6da15db62c
3 changed files with 38 additions and 2 deletions

View File

@@ -220,6 +220,33 @@ BreakpointParts BreakpointParameters::differencesTo
return parts;
}
bool BreakpointParameters::isValid() const
{
switch (type) {
case Debugger::Internal::BreakpointByFileAndLine:
return !fileName.isEmpty() && lineNumber > 0;
case Debugger::Internal::BreakpointByFunction:
return !functionName.isEmpty();
case Debugger::Internal::WatchpointAtAddress:
case Debugger::Internal::BreakpointByAddress:
return address != 0;
case Debugger::Internal::BreakpointAtThrow:
case Debugger::Internal::BreakpointAtCatch:
case Debugger::Internal::BreakpointAtMain:
case Debugger::Internal::BreakpointAtFork:
case Debugger::Internal::BreakpointAtExec:
case Debugger::Internal::BreakpointAtSysCall:
case Debugger::Internal::BreakpointOnQmlSignalHandler:
case Debugger::Internal::BreakpointAtJavaScriptThrow:
break;
case Debugger::Internal::WatchpointAtExpression:
return !expression.isEmpty();
case Debugger::Internal::UnknownType:
return false;
}
return true;
}
bool BreakpointParameters::equals(const BreakpointParameters &rhs) const
{
return !differencesTo(rhs);