tromey at sourceware dot org
2018-11-07 20:18:34 UTC
https://sourceware.org/bugzilla/show_bug.cgi?id=23871
Bug ID: 23871
Summary: better support for slices
Product: gdb
Version: HEAD
Status: NEW
Severity: normal
Priority: P2
Component: rust
Assignee: unassigned at sourceware dot org
Reporter: tromey at sourceware dot org
Target Milestone: ---
Compile & debug this program:
pub fn main() {
let x = &[1, 2, 3, 4, 5];
let y = &x[..];
let z = 7;
}
First, 'x' is not recognized as a slice:
(gdb) p x
$1 = (i32 (*)[5]) 0x555555577b40
The DWARF says it is a pointer to an array:
<1><30d>: Abbrev Number: 6 (DW_TAG_pointer_type)
<30e> DW_AT_type : <0x316>
<312> DW_AT_name : (indirect string, offset: 0x2bd): &[i32; 5]
<1><316>: Abbrev Number: 7 (DW_TAG_array_type)
<317> DW_AT_type : <0x323>
<2><31b>: Abbrev Number: 8 (DW_TAG_subrange_type)
<31c> DW_AT_type : <0x32a>
<320> DW_AT_lower_bound : 0
<321> DW_AT_count : 5
<2><322>: Abbrev Number: 0
... maybe this should be fixed in rustc, but maybe in gdb.
Second, rust-gdb's pretty-printer shows this for 'y':
(gdb) p y
$2 = &[i32](len: 5) = {1, 2, 3, 4, 5}
But gdb shows:
(gdb) p/r y
$3 = &[i32] {
data_ptr: 0x555555577b40,
length: 5
}
It might make sense to have the built-in printer work
more like rust-gdb's.
Bug ID: 23871
Summary: better support for slices
Product: gdb
Version: HEAD
Status: NEW
Severity: normal
Priority: P2
Component: rust
Assignee: unassigned at sourceware dot org
Reporter: tromey at sourceware dot org
Target Milestone: ---
Compile & debug this program:
pub fn main() {
let x = &[1, 2, 3, 4, 5];
let y = &x[..];
let z = 7;
}
First, 'x' is not recognized as a slice:
(gdb) p x
$1 = (i32 (*)[5]) 0x555555577b40
The DWARF says it is a pointer to an array:
<1><30d>: Abbrev Number: 6 (DW_TAG_pointer_type)
<30e> DW_AT_type : <0x316>
<312> DW_AT_name : (indirect string, offset: 0x2bd): &[i32; 5]
<1><316>: Abbrev Number: 7 (DW_TAG_array_type)
<317> DW_AT_type : <0x323>
<2><31b>: Abbrev Number: 8 (DW_TAG_subrange_type)
<31c> DW_AT_type : <0x32a>
<320> DW_AT_lower_bound : 0
<321> DW_AT_count : 5
<2><322>: Abbrev Number: 0
... maybe this should be fixed in rustc, but maybe in gdb.
Second, rust-gdb's pretty-printer shows this for 'y':
(gdb) p y
$2 = &[i32](len: 5) = {1, 2, 3, 4, 5}
But gdb shows:
(gdb) p/r y
$3 = &[i32] {
data_ptr: 0x555555577b40,
length: 5
}
It might make sense to have the built-in printer work
more like rust-gdb's.
--
You are receiving this mail because:
You are on the CC list for the bug.
You are receiving this mail because:
You are on the CC list for the bug.