Я использую gdb 7.2 с конфигурацией Дэна Маринеску, которая позволяет печатать строки векторов STL и т. Д. (Pstring, pvector и т. Д.). Это не очень хорошо.Поэтому, посмотрев на один из приведенных ниже ответов, я вычистил и использовал красивые принтеры, доступные в версии 7.0 и выше.
Чтобы сделать это, я поместил следующее в свой .gdbinit
python
import sys
sys.path.insert(0, '/home/me/gdb_printers/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
set print elements 0
В инструкциях говорится, что нужно загрузить код из svn в / home / me / gdb_printers / python, но это было довольно давно.Я заметил, что там был код GDB 7.3.Так что я удалил выше и основы работают, но STL не делает.Вот объект, содержащий строку:
{a = 2, b = 97 'a', c = 2469135780247, d = 1.1363636363636362, e = {static npos = 18446744073709551615, _M_dataplus = {> = {<__ gnu_cxx:: new_allocator> = {},}, _M_p = 0x602028 "foo"}}}
. / gdb-7.3.50.20110526 / gdb / data-directory / python / gdb:
По порядкучтобы работать с STL, мне нужно было скачать код для проекта archer: svn co svn: //gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python
и поместить его вНад каталогом, убедившись, что все остальные ненужные файлы исчезли, и они прекрасно работают.