Introduce gdb.FinishBreakpoint in Python
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.python / py-finish-breakpoint.py
1 # Copyright (C) 2011 Free Software Foundation, Inc.
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16 # This file is part of the GDB testsuite. It tests python Finish
17 # Breakpoints.
18
19 class MyFinishBreakpoint (gdb.FinishBreakpoint):
20 def __init__(self, val, frame):
21 gdb.FinishBreakpoint.__init__ (self, frame)
22 print "MyFinishBreakpoint init"
23 self.val = val
24
25 def stop(self):
26 print "MyFinishBreakpoint stop with %d" % int (self.val.dereference ())
27 print "return_value is: %d" % int (self.return_value)
28 gdb.execute ("where 1")
29 return True
30
31 def out_of_scope(self):
32 print "MyFinishBreakpoint out of scope"
33
34 class TestBreakpoint(gdb.Breakpoint):
35 def __init__(self):
36 gdb.Breakpoint.__init__ (self, spec="test_1", internal=1)
37 self.silent = True
38 self.count = 0
39 print "TestBreakpoint init"
40
41 def stop(self):
42 self.count += 1
43 try:
44 TestFinishBreakpoint (gdb.newest_frame (), self.count)
45 except ValueError as e:
46 print e
47 return False
48
49 class TestFinishBreakpoint (gdb.FinishBreakpoint):
50 def __init__ (self, frame, count):
51 self.count = count
52 gdb.FinishBreakpoint.__init__ (self, frame, internal=1)
53
54
55 def stop(self):
56 print "-->", self.number
57 if (self.count == 3):
58 print "test stop: %d" % self.count
59 return True
60 else:
61 print "test don't stop: %d" % self.count
62 return False
63
64
65 def out_of_scope(self):
66 print "test didn't finish: %d" % self.count
67
68 class TestExplicitBreakpoint(gdb.Breakpoint):
69 def stop(self):
70 try:
71 SimpleFinishBreakpoint (gdb.newest_frame ())
72 except ValueError as e:
73 print e
74 return False
75
76 class SimpleFinishBreakpoint(gdb.FinishBreakpoint):
77 def __init__(self, frame):
78 gdb.FinishBreakpoint.__init__ (self, frame)
79
80 print "SimpleFinishBreakpoint init"
81
82 def stop(self):
83 print "SimpleFinishBreakpoint stop"
84 return True
85
86 def out_of_scope(self):
87 print "SimpleFinishBreakpoint out of scope"
88
89 print "Python script importedd"
This page took 0.04205 seconds and 4 git commands to generate.