frame apply [all | count | -count | level level…] [option]… command
frame apply command allows you to apply the named
command to one or more frames.
all to apply
command to all frames.
count to apply
command to the innermost
count is a positive number.
-count to apply
command to the outermost
count is a positive number.
level to apply
command to the set of frames identified
level is a frame level or a range of frame
level2. The frame level is the number shown
in the first field of the ‘
backtrace’ command output.
2-4 6-8 3’ indicates to apply
command for the frames
at levels 2, 3, 4, 6, 7, 8, and then again on frame at level 3.
Note that the frames on which
frame apply applies a command are
also influenced by the
set backtrace settings such as
set backtrace past-main and
set backtrace limit N.
frame apply command also supports a number of options that
allow overriding relevant
set backtrace settings:
Whether backtraces should continue past
Related setting: set backtrace past-main.
Whether backtraces should continue past the entry point of a program. Related setting: set backtrace past-entry.
By default, GDB displays some frame information before the
output produced by
command, and an error raised during the
execution of a
command will abort
frame apply. The
following options can be used to fine-tune these behaviors:
-c, which stands for ‘
continue’, causes any
command to be displayed, and the execution of
frame apply then continues.
-s, which stands for ‘
silent’, causes any errors
or empty output produced by a
command to be silently ignored.
That is, the execution continues, but the frame information and errors
are not printed.
quiet’) disables printing the frame
The following example shows how the flags
working when applying the command
p j to all frames, where
j can only be successfully printed in the outermost
#1 main frame.
(gdb) frame apply all p j #0 some_function (i=5) at fun.c:4 No symbol "j" in current context. (gdb) frame apply all -c p j #0 some_function (i=5) at fun.c:4 No symbol "j" in current context. #1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 $1 = 5 (gdb) frame apply all -s p j #1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 $2 = 5 (gdb)
By default, ‘
frame apply’, prints the frame location
information before the command output:
(gdb) frame apply all p $sp #0 some_function (i=5) at fun.c:4 $4 = (void *) 0xffffd1e0 #1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 $5 = (void *) 0xffffd1f0 (gdb)
If the flag
-q is given, no frame information is printed:
(gdb) frame apply all -q p $sp $12 = (void *) 0xffffd1e0 $13 = (void *) 0xffffd1f0 (gdb)
frame apply all -s command.
command on all frames, ignoring errors and empty output.
It can for example be used to print a local variable or a function argument without knowing the frame where this variable or argument is, using:
(gdb) faas p some_local_var_i_do_not_remember_where_it_is
faas command accepts the same options as the
frame apply command. See frame apply.
Note that the command
tfaas command applies
on all frames of all threads. See See Threads.