subclass of gdb.Breakpoint - Is it possible to show an internal condition to the user?
Simon Sobisch
simonsobisch@gnu.org
Sun Jun 27 18:57:03 GMT 2021
The GDB manual describes quite well how to subvlass gdb.Breakpoint and
overwrite the stop method. This is very useful to implement conditions
that need python code to execute, but it is something that is
_additionally_ checked after the Breakpoint.condition was checked from GDB.
Using "info breakpoints" the user sees this condition, but not the
internal one.
Comparision:
(gdb) b 36
Breakpoint 2 at 0x5555555562c5: file TESTB.c, line 36.
(gdb) info breakpoints
Num Type Disp Enb Address What
2 breakpoint keep y 0x00005555555562c5 in main at TESTB.c:36
(gdb) condition 2 argv=2
(gdb) info breakpoints
Num Type Disp Enb Address What
2 breakpoint keep y 0x00005555555562c5 in main at TESTB.c:36
stop only if argv=2
(gdb) py
>class MyBreakpoint (gdb.Breakpoint):
> def stop (self):
> inf_val = gdb.parse_and_eval("argv")
> if inf_val == 2:
> return True
> return False
>end
(gdb) py MyBreakpoint("36")
Breakpoint 3 at 0x5555555562c5: file TESTB.c, line 36.
(gdb) info breakpoints
Num Type Disp Enb Address What
2 breakpoint keep y 0x00005555555562c5 in main at TESTB.c:36
stop only if argv=2
3 breakpoint keep y 0x00005555555562c5 in main at TESTB.c:36
So with the subclass of gdb.Breakpoint:
1 the user possibly creates a condition that will never work (like
ccondition 3 argv=3 - > if that is true then the stop method would be
called and return false, so that it will never stop)
2 the user has no option to see which class of a breakpoint it is (could
he, other than iterating over the breakpoints and check their class via
python?)
3 the user cannot see what possibly complex condition (which is the
reasonable use case to subclass and overwrite stop) is actually checke
Question: Is it possible from the subclass to change the output of "info
breakpoints" to show a note to the user, for example what complex
condition is checked?
If not: Can I suggest a new writable attribute "Breakpoint.note" that
would be shown after "stop only if"? This way the subclass could present
the user with something, for example ["stop only if
easy-looking-condition"].
Thanks for thoughts and answers,
Simon
More information about the Gdb
mailing list