[RFC 0/5] Implenent 'frame apply COMMAND', enhance 'thread apply COMMAND'

Philippe Waroquiers
2018-05-05T19:28:23Z

This patch series :
* implements a new command
'frame apply [all | COUNT | -COUNT] [-FLAGS...] COMMAND'.
* enhance 'thread apply COMMAND' by adding a -FLAGS argument
* adds some shortcuts commands
* documents the above in gdb.texinfo and NEWS.

Th new command 'frame apply' allows to apply a COMMAND to a number of frames,
or to all frames.
The optional -FLAGS... argument allows to control what output to produce
and how to handle errors raised when applying COMMAND to a frame.

Some examples usages for this new command:
frame apply all info frame
Produce info frame for all frames
frame apply all p $sp
For each frame, print the location, followed by the frame sp
frame apply all -qq p $sp
Same as before, but -qq flags (q = quiet) indicate to only print
the frames sp.
frame apply all -vv p $sp
Same as before, but -vv flags (v = verbose) indicate to print
location and source line for each frame.
frame apply all p some_local_var_somewhere
Print some_local_var_somewhere in all frames. 'frame apply'
will abort as soon as the print command fails.
frame apply all -c p some_local_var_somewhere
Same as before, but -c flag (c = continue) means to
print the error and continue applying command in case the
print command fails.
frame apply all -s p some_local_var_somewhere
Same as before, but -s flag (s = silent) means to
be silent for frames where the print command fails.
In other words, this allows to 'search' the frame in which
some_local_var_somewhere can be printed.

'thread apply' command has been enhanced to also accepts a -FLAGS...
argument.

Some examples usages for this new argument:
thread apply all -s frame apply all -s p some_local_var_somewhere
Prints the thread id, frame location and some_local_var_somewhere
value in frames of threads that have such local var.

To make the life of the user easier, the most typical use cases
have shortcuts :
faas : shortcut for 'frame apply all -s'
taas : shortcut for 'thread apply all -s'
tfaas : shortcut for 'thread apply all -s frame apply all -s"

An example usage :
tfaas p some_local_var_somewhere
same as the longer:
'thread apply all -s frame apply all -s p some_local_var_somewhere'

The patch serie provides the implementation and all user visible documentation.

What is still missing is:
* Missing regression tests.
Not yet done as this is painful, and so is better done once there is
an agreement on the behaviour.

* Missing ChangeLog.
Not yet done as this is painful, and is IMO close to or completely useless.
So, I will do it for the (first) RFA, once the flow of RFC comments
stops :).