diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2011-10-20 10:45:59 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2011-10-20 10:51:09 +0200 |
commit | 6da15db62c796de1cd1b01eb8976cdffeddeedf8 (patch) | |
tree | 82c1961c7a509e341528ac00fc778ab0fc001677 /src/plugins/debugger/breakpoint.cpp | |
parent | 734829151490d6ceea3d3911fec29d4cbd5a6ea5 (diff) | |
download | qt-creator-6da15db62c796de1cd1b01eb8976cdffeddeedf8.tar.gz |
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>
Diffstat (limited to 'src/plugins/debugger/breakpoint.cpp')
-rw-r--r-- | src/plugins/debugger/breakpoint.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/plugins/debugger/breakpoint.cpp b/src/plugins/debugger/breakpoint.cpp index c61892c09b..c0d9347977 100644 --- a/src/plugins/debugger/breakpoint.cpp +++ b/src/plugins/debugger/breakpoint.cpp @@ -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); |