summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/breakpoint.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2011-10-20 10:45:59 +0200
committerhjk <qthjk@ovi.com>2011-10-20 10:51:09 +0200
commit6da15db62c796de1cd1b01eb8976cdffeddeedf8 (patch)
tree82c1961c7a509e341528ac00fc778ab0fc001677 /src/plugins/debugger/breakpoint.cpp
parent734829151490d6ceea3d3911fec29d4cbd5a6ea5 (diff)
downloadqt-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.cpp27
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);