как просмотреть содержание контейнеров STL с помощью GDB 7.x

Я использовал макро-решение, как оно обрисовано в общих чертах здесь. Однако существует упоминание о том, как просмотреть их без макросов. Я обращаюсь к версии 7 GDB и выше.

Кто-то проиллюстрировал бы как?

Спасибо

13
задан Community 23 May 2017 в 10:29
поделиться

1 ответ

Получите программы просмотра Python из SVN

svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

Добавьте следующее в свой ~ / .gdbinit

python
import sys
sys.path.insert(0, '/path/to/pretty-printers/dir')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

Тогда печать должна работать:

std::map<int, std::string> the_map;
the_map[23] = "hello";
the_map[1024] = "world";

В gdb:

(gdb) print the_map 
$1 = std::map with 2 elements = { [23] = "hello", [1024] = "world" }

Чтобы вернуться к старому представлению, используйте print / r ( / r для raw).

См. Также: http://sourceware.org/gdb/wiki/STLSupport

21
ответ дан 1 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: