diff options
author | Tom Tromey <tom@tromey.com> | 2017-04-23 10:54:33 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-03-26 21:57:09 -0600 |
commit | ea3b06874c8a1037bad4fd5b9396d196e6963ac6 (patch) | |
tree | 3992edee33959fb4062ff519bbea7ec663bcba4f /gdb/doc | |
parent | 07dca93f3bbc2426d89eba460c925863e4ebd636 (diff) | |
download | gdb-ea3b06874c8a1037bad4fd5b9396d196e6963ac6.zip gdb-ea3b06874c8a1037bad4fd5b9396d196e6963ac6.tar.gz gdb-ea3b06874c8a1037bad4fd5b9396d196e6963ac6.tar.bz2 |
Rationalize "backtrace" command line parsing
The backtrace command has peculiar command-line parsing. In
particular, it splits the command line, then loops over the arguments.
If it sees a word it recognizes, like "full", it effectively drops
this word from the argument vector. Then, it pastes together the
remaining arguments, passing them on to backtrace_command_1, which in
turn passes the resulting string to parse_and_eval_long.
The documentation doesn't mention the parse_and_eval_long at all, so
it is a bit of a hidden feature that you can "bt 3*2". The strange
algorithm above also means you can "bt 3 * no-filters 2" and get 6
frames...
This patch changes backtrace's command line parsing to be a bit more
rational. Now, special words like "full" are only recognized at the
start of the command.
This also updates the documentation to describe the various bt options
individually.
gdb/ChangeLog
2018-03-26 Tom Tromey <tom@tromey.com>
* stack.c (backtrace_command): Rewrite command line parsing.
gdb/doc/ChangeLog
2018-03-26 Tom Tromey <tom@tromey.com>
* gdb.texinfo (Backtrace): Describe options individually.
Diffstat (limited to 'gdb/doc')
-rw-r--r-- | gdb/doc/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 60 |
2 files changed, 33 insertions, 31 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 2441f15..413e456 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,7 @@ +2018-03-26 Tom Tromey <tom@tromey.com> + + * gdb.texinfo (Backtrace): Describe options individually. + 2018-03-19 Tom Tromey <tom@tromey.com> * observer.texi: Remove. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 74e0fdb..28254c9 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -7307,45 +7307,43 @@ frame (frame zero), followed by its caller (frame one), and on up the stack. @anchor{backtrace-command} -@table @code @kindex backtrace @kindex bt @r{(@code{backtrace})} -@item backtrace -@itemx bt -Print a backtrace of the entire stack: one line per frame for all -frames in the stack. - -You can stop the backtrace at any time by typing the system interrupt -character, normally @kbd{Ctrl-c}. - -@item backtrace @var{n} -@itemx bt @var{n} -Similar, but print only the innermost @var{n} frames. - -@item backtrace -@var{n} -@itemx bt -@var{n} -Similar, but print only the outermost @var{n} frames. - -@item backtrace full -@itemx bt full -@itemx bt full @var{n} -@itemx bt full -@var{n} -Print the values of the local variables also. As described above, -@var{n} specifies the number of frames to print. - -@item backtrace no-filters -@itemx bt no-filters -@itemx bt no-filters @var{n} -@itemx bt no-filters -@var{n} -@itemx bt no-filters full -@itemx bt no-filters full @var{n} -@itemx bt no-filters full -@var{n} +To print a backtrace of the entire stack, use the @code{backtrace} +command, or its alias @code{bt}. This command will print one line per +frame for frames in the stack. By default, all stack frames are +printed. You can stop the backtrace at any time by typing the system +interrupt character, normally @kbd{Ctrl-c}. + +@table @code +@item backtrace [@var{args}@dots{}] +@itemx bt [@var{args}@dots{}] +Print the backtrace of the entire stack. The optional @var{args} can +be one of the following: + +@table @code +@item @var{n} +@itemx @var{n} +Print only the innermost @var{n} frames, where @var{n} is a positive +number. + +@item -@var{n} +@itemx -@var{n} +Print only the outermost @var{n} frames, where @var{n} is a positive +number. + +@item full +Print the values of the local variables also. This can be combined +with a number to limit the number of frames shown. + +@item no-filters Do not run Python frame filters on this backtrace. @xref{Frame Filter API}, for more information. Additionally use @ref{disable frame-filter all} to turn off all frame filters. This is only relevant when @value{GDBN} has been configured with @code{Python} support. @end table +@end table @kindex where @kindex info stack |