This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
[Bug gdb/16933] New: p omits trailing 0 when printing a range of chars
- From: "f dot heckenbach at fh-soft dot de" <sourceware-bugzilla at sourceware dot org>
- To: gdb-prs at sourceware dot org
- Date: Mon, 12 May 2014 08:00:29 +0000
- Subject: [Bug gdb/16933] New: p omits trailing 0 when printing a range of chars
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=16933
Bug ID: 16933
Summary: p omits trailing 0 when printing a range of chars
Product: gdb
Version: 7.7
Status: NEW
Severity: normal
Priority: P2
Component: gdb
Assignee: unassigned at sourceware dot org
Reporter: f.heckenbach@fh-soft.de
This bug was reported as Debian bug #666216 for gdb 7-0. According to Hector
Oron, it is still reproducable with 7.7-1.
p omits trailing 0 when printing a range of chars.
To reproduce:
# echo 'char foo[5] = { 1, 2, 0, 4, 0 };' > foo.c
# gcc -c -g foo.c
# gdb foo.o
(gdb) p foo[0]@5
$1 = "\001\002\000\004"
What I really wanted would be "{1, 2, 0, 4, 0}", like for other
integer types, since I explicitly selected a single element and gave
a range (@5), but if it must print it as a string, it should at
least print all of the bytes.
I know that's probably due to C's notorious confusion between
integers and characters, and I also know there are other ways to
dump some bytes in gdb.
But still it seems plain wrong to print 4 chars if 5 items were
explicitly requested, just because the last one happens to be 0.
Note that it's not printing a 0-terminated string either: The
embedded "\000" is printed; just one terminating 0 is omitted.
(Which gets very confusing with larger arrays, if you look for
something near the end, thinking the last one printed is the last
one requested and then go hunting your off-by-one bug, only to
realize later there wasn't any ...)
--
You are receiving this mail because:
You are on the CC list for the bug.