Проверка вложенных данных стандартной библиотеки - PullRequest
4 голосов
/ 12 августа 2011

Я использую DDD 3.3.11 и GDB 6.5-8.fc6rh под ним.Мой компилятор g ++ 4.1.1.

У меня есть контейнер карты stl, содержащий в качестве ключа для поиска вектор int (vector).Данные в ключе имеют размер MyType*.

. Я использую файл .gdbinit, написанный Дэном Маринеску.Он прекрасно работает, пока вы не вложите свои контейнеры стандартной библиотеки C ++.

Мой вопрос заключается в том, чтобы использовать методы проверки, описанные в файле .gdbinit, есть ли способ проверки вложенных данных stdlib?

Основная проблема, с которой я сталкиваюсь, возникает из-за того, что файл .gdbinit пытается выполнить типизацию.

Если моя карта имеет тип

 map<vector<int>, MyType*>

Затем в gdb я пытаюсьВызов pmap, такой как

pmap myMap vector<int> MyType*

Это не с

elem[0].left: No symbol "vector<int>" in current context.

Какой синтаксис используется в GDB, который я должен использовать для приведения некоторых данных к шаблонному типу?

1 Ответ

4 голосов
/ 13 августа 2011

Используя более позднюю версию GDB, мне пришлось добавить одинарные кавычки, а также добавить пространства имен и распределитель.

(gdb) pmap myMap 'std::vector<int,std::allocator<int>>' MyType*
elem[0].left: $3 = std::vector of length 1, capacity 1 = {2}
elem[0].right: $4 = (MyType *) 0x7fffffffe060
Map size = 1
...