сокращение мусора в печати GDB - PullRequest
3 голосов
/ 24 мая 2011

Я использую 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

и поместить его вНад каталогом, убедившись, что все остальные ненужные файлы исчезли, и они прекрасно работают.

1 Ответ

1 голос
/ 25 мая 2011

То, что вы хотите сделать, решается в GDB 7.0 и выше с Python pretty printers .

Вам не нужно pstring, обычный print просто работает (также для встроенных строк).

...