GDB を使用して C++ プログラムをデバッグするにはどうすればよいですか?

王林
リリース: 2024-06-04 16:13:01
オリジナル
797 人が閲覧しました

GDB を使用した C++ プログラムのデバッグには、GDB のセットアップ、-g オプションを使用したコードのコンパイル、デバッグ情報の生成、GDB の開始とプログラムのロード、次のコマンドを使用したデバッグが含まれます。 run: プログラムを実行します Break: ブレークポイントの設定next: コードの次の行を実行します step: 行ごとに実行します コード print: 変数の値を出力します bt: コールスタックを表示します quit: GDB を終了します

如何使用 GDB 调试 C++ 程序?

GDB を使用して C++ プログラムをデバッグする方法

はじめに

GDB (GNU デバッガー) は、C++ プログラムのデバッグに使用できる強力なツールです。これにより、プログラマーは実行時にプログラムのステータスを検査し、ブレークポイントを設定し、コードを 1 行ずつ実行できます。

GDBをセットアップする

  1. GDBをインストールします。 Ubuntu ユーザーは、コマンド

    sudo apt-get install gdb
    ログイン後にコピー
  2. を使用して C++ プログラムをコンパイルし、デバッグ情報を生成できます。次の g++ オプションを使用します:

    g++ -g -o program program.cpp
    ログイン後にコピー
    ログイン後にコピー

GDB を起動します

  1. GDB を実行してプログラムをロードします:

    gdb program
    ログイン後にコピー
    ログイン後にコピー
  2. 次のコマンドを使用して実行中のプログラムにアタッチします:

    attach pid
    ログイン後にコピー

Basic debコマンドを口説く

  • run プログラムを実行する
  • break ブレークポイントを設定する
  • next コードの次の行を実行する
  • step コードを 1 行ずつ実行する
  • printの値を出力します。変数
  • bt コールスタックを表示
  • quit GDBを終了

実用的なケース

以下は、GDBを使用してデバッグする単純なC++プログラムの例です:

#include <iostream>

using namespace std;

int main() {
  int a = 10;
  int b = 20;
  int c = a + b;
  cout << "c = " << c << endl;
  return 0;
}
ログイン後にコピー

デバッグ手順

  1. プログラムをコンパイルし、デバッグ情報を生成します:

    g++ -g -o program program.cpp
    ログイン後にコピー
    ログイン後にコピー
  2. GDBを起動してプログラムをロードします:

    gdb program
    ログイン後にコピー
    ログイン後にコピー
  3. ブレークポイントを設定します:

    break 11
    ログイン後にコピー
  4. プログラムを実行します:

    run
    ログイン後にコピー
  5. プログラムが停止します11 行目:

  6. int c = a + b ;

  7. 変数の値を確認します:

    print c
    ログイン後にコピー
  8. コードを 1 行ずつ実行します:

    next
    ログイン後にコピー
  9. GDB を終了します:

    quit
    ログイン後にコピー

結論

GDB は、C++ プログラムをデバッグするための強力なツールです。これらの手順に従うことで、GDB を効果的に使用してプログラムのバグを見つけて修正できます。

以上がGDB を使用して C++ プログラムをデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート