2009-11-03 4 views
10

Mein gdb ist GNU gdb Red Hat Linux (6.3.0.0-1.162.el4rh). Und ich kann keine Vorlagen debuggen. Wie kann ich Vorlagen mit diesem Debugger debuggen?Debugging-Vorlagen mit GDB

+0

Ihre Frage ist nicht klar genug. Code-Snippets, was du gemacht hast, was nicht funktioniert - all das könnte uns helfen dir zu helfen. –

Antwort

10

Wenn das Problem nur darin besteht, den Haltepunkt in Ihrem Code zu platzieren. Hier ist ein kleiner Ausschnitt

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)); 
} 

mit kompilieren 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 

sonst könnte man nur verwenden

(gdb) b main.cpp:16 
0

Ich hatte eine harte Zeit zu versuchen, gdb Debugging zu Arbeit mit Vorlagen zu bekommen Code mit gdb 6.8 mit Code mit gcc-Version kompiliert 4.4.1

Nach mir die Haare für eine Weile Rippen, fand ich, dass es magisch begann perfekt zu arbeiten, wenn ich den -fPIC Schalter auf die g ++ hinzufügen Argumente zusammenstellen.

+2

Hallo Bo und Ferd, Ich bin neugierig zu wissen, wie -fPIC, d. H. Positionsunabhängiger Code, Ihnen geholfen hat, Template-Programme in C++ zu debuggen. Ich werde dankbar sein, wenn Sie Ihre Einsichten freundlicherweise teilen. – indranil