首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GDB调试模板

使用GDB调试模板
EN

Stack Overflow用户
提问于 2009-11-03 20:10:13
回答 2查看 10.4K关注 0票数 14

我的gdb是GNU gdb Red Hat Linux (6.3.0.0-1.162.el4rh),我不能调试模板。如何使用此调试器调试模板?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-03 20:36:31

如果你的问题仅仅是在代码中放置断点。这是一小段代码

例如: main.cpp

代码语言:javascript
复制
#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进行编译

代码语言:javascript
复制
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

否则,您可以直接使用

代码语言:javascript
复制
(gdb) b main.cpp:16
票数 11
EN

Stack Overflow用户

发布于 2012-07-03 06:29:54

我很难让gdb使用gdb 6.8调试模板代码,而gdb使用的是用gcc 4.4.1版本编译的代码。

经过一段时间的摸索后,我发现当我在g++编译参数中添加-fPIC开关时,它神奇地开始完美地工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1666963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档