Мой gdb - GNU gdb Red Hat Linux (6.3.0.0-1.162.el4rh). И я не могу отлаживать шаблоны. Как отлаживать шаблоны с помощью этого отладчика?
Отладка шаблонов с помощью GDB
Ответ 1
если ваша проблема заключается в размещении точки останова в коде. Вот небольшой фрагмент
ex: main.cpp
#include <iostream>
template <typename T>
void coin(T v)
{
std::cout << v << std::endl;
}
template<typename T>
class Foo
{
public:
T bar(T c)
{
return c * 2;
}
};
int main(int argc, char** argv)
{
Foo<int> f;
coin(f.bar(21));
}
скомпилировать g++ -O0 -g main.cpp
gdb ./a.out
(gdb) b Foo<int>::bar(int)
Breakpoint 2 at 0x804871d: file main.cpp, line 16.
(gdb) b void coin<int>(int)
Breakpoint 1 at 0x804872a: file main.cpp, line 6.
(gdb) r
... debugging start
иначе вы могли бы просто использовать
(gdb) b main.cpp:16
Ответ 2
Мне было тяжело пытаться получить отладку gdb для работа с кодом шаблонов с использованием gdb 6.8 с кодом, скомпилированным с gcc версии 4.4.1
После разрыва моих волос я обнаружил, что это волшебно начал работать отлично, когда я добавляю ключ -fPIC к аргументам компиляции g++.