GNU/Linux >> Linux の 問題 >  >> Linux

GDB を使用したテンプレートのデバッグ

問題がコードにブレークポイントを配置することだけである場合。ここに小さなスニペットがあります

例: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

Linux
  1. Ddでバイナリにパッチを適用しますか?

  2. gdb と gdbserver を使用して Windows から Linux プロセスをリモートでデバッグする:Windows 側では正確に何が必要ですか?

  3. 行番号情報を含む gcc を使用して C++ のスタック トレースを取得するにはどうすればよいですか?

  1. Qt を使用して Windows および Linux で Ctrl+C をキャッチする方法

  2. お客様のボックスで生成されたコア ファイルのデバッグ

  3. GDB と QEMU を使用して Linux カーネルをデバッグするには?

  1. コマンドライン パラメータがある場合、GDB を使用してプログラムのコア ダンプ ファイルを分析するにはどうすればよいですか?

  2. Eclipse GUI を使用した C++ アプリケーションのリモート デバッグ

  3. GDB とコアダンプのトラブル