Какой компилятор (и какую версию) вы использовали для создания своего тестового источника?
Я предполагаю, что это была не последняя версия g++
.Вот что я получаю с g++ 4.4.3-4ubuntu5
:
$ gdb -q ./a.out
Reading symbols from /tmp/a.out...done.
(gdb) b 12
Breakpoint 1 at 0x400de3: file t.cc, line 12.
(gdb) r
Breakpoint 1, main () at t.cc:12
12 return 0;
(gdb) p mapInt2
$1 = std::map with 1 elements = {[3] = 4}
Обновление:
Это то, что я получаю для версии: g ++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Я вижу проблему.Инструкции, на которые вы ссылались, являются неверными .
В частности, инструкции предлагают: svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python
, но проблема в том, что код Python достигает libstdc++
внутренних элементов , и, следовательно, должен соответствовать этим внутренним элементам (по этой причине симпатичные принтеры являются частью GCC, а не частью GDB, на что пожаловался bruce.banner).
Когда высделал свежий svn co ...
, вы взяли копию кода Python, который больше не соответствует вашим libstdc++
внутренним компонентам, и это то, что вызывает у вас проблемы.
В частности, svn log
показывает, что find_type
было добавлено здесь:
r183732 | tromey | 2012-01-30 08:25:11 -0800 (Mon, 30 Jan 2012) | 27 lines
Это на намного позже, чем gcc-4.4.3
.Тогда вы хотите получить симпатичные принтеры, которые соответствуют вашей версии libstdc++
, например:
svn co svn://gcc.gnu.org/svn/gcc/branches/gcc_4_4_3_release/libstdc++-v3/python
За исключением приведенного выше, команда работать не будет, поскольку gcc 4.4.3 предшествует симпатичным принтерам.
Независимо от того, реализация std::map
(и большая часть остальных внутренних компонентов STL) не изменилась между 4.4.3 и 4.6, и эта команда делает работа:
svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch/libstdc++-v3/python