Как мне красиво напечатать структуры Rust в GDB?

#debugging #gdb #rust #pretty-print

#отладка #gdb #Ржавчина #красиво распечатать

Вопрос:

Как мне красиво напечатать структуры (конкретно Vec структуры) в rust-gdb или обычном gdb виде? Всякий раз, когда я вызываю p some_vector , я получаю этот результат:

 collections::vec::Vec<usize> = {buf = alloc::raw_vec::RawVec<usize> = {ptr = core::ptr::Unique<usize> = {pointer = core::nonzero::NonZero<*const usize> = {
    0x7ffff640d000}, _marker = core::marker::PhantomData<usize>}, cap = 16}, len = 10}
  

Это просто нечитаемо. Есть ли какой-либо способ получить результат, показывающий содержимое Vec ? Я использую Rust 1.12 и GDB 7.12.

Комментарии:

1. В rust-gdb я получаю такие вещи, как $1 = Vec<i32>(len: 2, cap: 2) = {1, 2} . В gdb с другой стороны, я получаю нечто более близкое к тому, что есть у вас. Вы действительно пробовали rust-gdb ?

2. @mcarton совпадают ли ваши версии GDB и Rust?

3. Слегка устаревшие gdb 7.11.1 и rust 1.12. Но, возможно, в какой-то момент произошел регресс…

4. Что ж, после обновления до gdb 7.12 я получаю точно такой же результат, что и у него с gdb , и все еще более приятный с rust-gdb .

5. В Rust 1.12.1 и gdb 7.12 данные выводятся в некрасивом виде rust-gdb (даже несмотря на info pretty-printer списки rust_pretty_printer_lookup_function )…