我的gdb是GNU gdb Red Hat Linux (6.3.0.0-1.162.el4rh),我不能调试模板。如何使用此调试器调试模板?
发布于 2009-11-03 20:36:31
如果你的问题仅仅是在代码中放置断点。这是一小段代码
例如: 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发布于 2012-07-03 06:29:54
我很难让gdb使用gdb 6.8调试模板代码,而gdb使用的是用gcc 4.4.1版本编译的代码。
经过一段时间的摸索后,我发现当我在g++编译参数中添加-fPIC开关时,它神奇地开始完美地工作了。
https://stackoverflow.com/questions/1666963
复制相似问题