diff options
author | Toshihito Kikuchi <k.toshihito@yahoo.de> | 2016-06-09 22:47:42 -0700 |
---|---|---|
committer | Toshihito Kikuchi <k.toshihito@yahoo.de> | 2016-06-09 22:50:47 -0700 |
commit | bb556f1facb86cdd1591d490f2d2d670bdd5a1ee (patch) | |
tree | ccc99d237487ee5952ff66d92a4f2a207dd41f6a /gdb/doc | |
parent | c040f3fb55315f06ceb9e6de6ac167a95a445ace (diff) | |
download | gdb-bb556f1facb86cdd1591d490f2d2d670bdd5a1ee.zip gdb-bb556f1facb86cdd1591d490f2d2d670bdd5a1ee.tar.gz gdb-bb556f1facb86cdd1591d490f2d2d670bdd5a1ee.tar.bz2 |
Add negative repeat count to 'x' command
This change adds support for specifying a negative repeat count to
all the formats of the 'x' command to examine memory backward.
A new testcase 'examine-backward' is added to cover this new feature.
Here's the example output from the new feature:
<format 'i'>
(gdb) bt
#0 Func1 (n=42, p=0x40432e "hogehoge") at main.cpp:5
#1 0x00000000004041fa in main (argc=1, argv=0x7fffffffdff8) at main.cpp:19
(gdb) x/-4i 0x4041fa
0x4041e5 <main(int, char**)+11>: mov %rsi,-0x10(%rbp)
0x4041e9 <main(int, char**)+15>: lea 0x13e(%rip),%rsi
0x4041f0 <main(int, char**)+22>: mov $0x2a,%edi
0x4041f5 <main(int, char**)+27>: callq 0x404147
<format 'x'>
(gdb) x/-4xw 0x404200
0x4041f0 <main(int, char**)+22>: 0x00002abf 0xff4de800 0x76e8ffff 0xb8ffffff
(gdb) x/-4
0x4041e0 <main(int, char**)+6>: 0x7d8910ec 0x758948fc 0x358d48f0 0x0000013e
gdb/ChangeLog:
* NEWS: Mention that GDB now supports a negative repeat count in
the 'x' command.
* printcmd.c (decode_format): Allow '-' in the parameter
"string_ptr" to accept a negative repeat count.
(find_instruction_backward): New function.
(read_memory_backward): New function.
(integer_is_zero): New function.
(find_string_backward): New function.
(do_examine): Use new functions to examine memory backward.
(_initialize_printcmd): Mention that 'x' command supports a negative
repeat count.
gdb/doc/ChangeLog:
* gdb.texinfo (Examining Memory): Document negative repeat
count in the 'x' command.
gdb/testsuite/ChangeLog:
* gdb.base/examine-backward.c: New file.
* gdb.base/examine-backward.exp: New file.
Diffstat (limited to 'gdb/doc')
-rw-r--r-- | gdb/doc/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 8ef6cba..a01d545 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2016-06-09 Toshihito Kikuchi <k.toshihito@yahoo.de> + + * gdb.texinfo (Examining Memory): Document negative repeat + count in the 'x' command. + 2016-06-06 Simon Marchi <simon.marchi@ericsson.com> * gdb.texinfo (GDB/MI Async Records): Document method and diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 1da81a1..6e2b493 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -9295,7 +9295,8 @@ Several commands set convenient defaults for @var{addr}. @table @r @item @var{n}, the repeat count The repeat count is a decimal integer; the default is 1. It specifies -how much memory (counting by units @var{u}) to display. +how much memory (counting by units @var{u}) to display. If a negative +number is specified, memory is examined backward from @var{addr}. @c This really is **decimal**; unaffected by 'set radix' as of GDB @c 4.1.2. @@ -9350,6 +9351,10 @@ starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four words (@samp{w}) of memory above the stack pointer (here, @samp{$sp}; @pxref{Registers, ,Registers}) in hexadecimal (@samp{x}). +You can also specify a negative repeat count to examine memory backward +from the given address. For example, @samp{x/-3uh 0x54320} prints three +halfwords (@code{h}) at @code{0x54314}, @code{0x54328}, and @code{0x5431c}. + Since the letters indicating unit sizes are all distinct from the letters specifying output formats, you do not have to remember whether unit size or format comes first; either order works. The output @@ -9366,6 +9371,13 @@ follow the last instruction that is within the count. The command @code{disassemble} gives an alternative way of inspecting machine instructions; see @ref{Machine Code,,Source and Machine Code}. +If a negative repeat count is specified for the formats @samp{s} or @samp{i}, +the command displays null-terminated strings or instructions before the given +address as many as the absolute value of the given number. For the @samp{i} +format, we use line number information in the debug info to accurately locate +instruction boundaries while disassembling backward. If line info is not +available, the command stops examining memory with an error message. + All the defaults for the arguments to @code{x} are designed to make it easy to continue scanning memory with minimal specifications each time you use @code{x}. For example, after you have inspected three machine |