#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
)…