我的gdb是GNU gdb Red Hat Linux(6.3.0.0-1.162.el4rh)。 而我无法debugging模板。 我怎样才能用这个debugging器debugging模板?
如果你的问题只是在你的代码中放置断点。 这是一个小片段
例如: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
我很难尝试使用gdb 6.8来使用gcc版本4.4.1编译的代码来使用gdb调试来处理模板代码
在将头发撕开一段时间之后,我发现,当我将-fPIC开关添加到g ++编译参数时,它神奇地开始工作。