Linux で GDB を使用してマルチスレッド プログラムをデバッグするための一般的な構成方法

WBOY
リリース: 2023-07-04 14:49:10
オリジナル
1756 人が閲覧しました

Linux で GDB を使用してマルチスレッド プログラムをデバッグするための一般的な構成方法

はじめに:
マルチスレッド プログラミングでは、デバッグは不可欠なタスクです。 GDB は、マルチスレッド プログラムのエラーを見つけて解決するのに役立つ強力なデバッガです。この記事では、GDB を使用して Linux でマルチスレッド プログラムをデバッグするための一般的な構成方法を紹介し、コード例を示して、読者が GDB をよりよく理解して使用できるようにしたいと考えています。

1. GDB のインストール
まず、Linux システムに GDB をインストールする必要があります。ターミナルに次のコマンドを入力して、インストールを完了します。

$ sudo apt-get install gdb
ログイン後にコピー

2. マルチスレッド プログラムのコンパイル
マルチスレッド プログラムをデバッグする前に、まず単純なマルチスレッド プログラムを作成してコンパイルする必要があります。 。サンプル プログラムのコードは次のとおりです。

#include  #include  #define NUM_THREADS 5 void* thread_func(void* thread_id) { long tid = (long)thread_id; printf("Hello World! It's me, thread #%ld! ", tid); pthread_exit(NULL); } int main() { pthread_t threads[NUM_THREADS]; int rc; long t; for (t = 0; t < NUM_THREADS; t++) { printf("In main: creating thread %ld ", t); rc = pthread_create(&threads[t], NULL, thread_func, (void*)t); if (rc) { printf("ERROR; return code from pthread_create() is %d ", rc); return -1; } } pthread_exit(NULL); }
ログイン後にコピー

上記のコードをmultithread.cという名前のファイルに保存し、次のコマンドを使用してコンパイルします。

$ gcc -g -pthread -o multithread multithread.c
ログイン後にコピー

Among-gオプションは実行可能ファイルにデバッグ情報を追加するために使用され、-pthreadオプションはマルチスレッド ライブラリを導入するために使用されます。

3. GDB デバッグの開始
コンパイルが完了したら、GDB を使用してデバッグを開始できます。ターミナルで次のコマンドを入力します:

$ gdb multithread
ログイン後にコピー

4. GDB デバッグ オプションの構成
GDB には、マルチスレッド プログラムのデバッグを改善するのに役立つデバッグ オプションがいくつかあります。次のコマンドを入力して構成できます:

  1. 表示スレッド番号を設定します
    GDB に次のコマンドを入力して、表示スレッド番号を設定します:
(gdb) set print thread-events off
ログイン後にコピー
  1. 表示スタックを設定する
    GDB で次のコマンドを入力して表示スタックを設定します。
(gdb) set backtrace limit 10
ログイン後にコピー
  1. 表示スレッド情報を設定します
    GDB で次のコマンドを入力して、表示スレッドを設定します。 情報:
(gdb) show scheduling
ログイン後にコピー
  1. 表示スレッド実行のコードの場所を設定します
    GDB に次のコマンドを入力して、表示スレッドの実行のコードの場所を設定します:
(gdb) set scheduler-locking on
ログイン後にコピー

5. ブレークポイントとモニタリング ポイントを設定する
デバッグ プロセス中に、プログラムの実行フローを制御するためにブレークポイントとモニタリング ポイントを設定できます。一般的に使用されるコマンドの例を次に示します。

  1. Set ブレークポイント
    GDB に次のコマンドを入力してブレークポイントを設定します。
(gdb) break function_name
ログイン後にコピー
  1. ブレークポイントの削除 をクリックします。
    GDB に次のコマンドを入力してブレークポイントを削除します:
(gdb) delete breakpoints
ログイン後にコピー
  1. Set監視ポイント
    GDB に次のコマンドを入力して監視ポイントを設定します:
(gdb) watch variable_name
ログイン後にコピー
  1. モニタリング ポイントを削除する
    GDB で次のコマンドを入力してモニタリング ポイントを削除します:
(gdb) delete watchpoints
ログイン後にコピー

6. マルチスレッド プログラムのデバッグ
GDB では、次のことができます。マルチスレッド プログラムをデバッグするには、次のコマンドを使用します。

  1. プログラムの開始
    GDB に次のコマンドを入力して、プログラムを開始します。
(gdb) run
ログイン後にコピー
  1. プログラムを一時停止します
    GDB に次のコマンドを入力して、実行中のプログラムを一時停止します:
(gdb) Ctrl+C
ログイン後にコピー
  1. すべてのスレッドを一覧表示
    GDB に次のコマンドを入力して、すべてのスレッドを一覧表示します:
(gdb) info threads
ログイン後にコピー
  1. 指定したスレッドに切り替える
    GDB に次のコマンドを入力して、指定したスレッドに切り替えます:
(gdb) thread thread_id
ログイン後にコピー
  1. 実行を継続するプログラム
    GDB で次のコマンドを入力して、プログラムの実行を続行します:
(gdb) continue
ログイン後にコピー

7. 概要
この記事では、GDB を使用して Linux でマルチスレッド プログラムをデバッグするための一般的な構成方法を紹介します。コード例が付属しています。デバッグ オプションを適切に構成し、対応するコマンドを使用することで、マルチスレッド プログラムの問題を適切に制御して特定し、デバッグの効率と精度を向上させることができます。この記事が読者のマルチスレッド デバッグに役立ち、さらなる学習と実践のきっかけになれば幸いです。

以上がLinux で GDB を使用してマルチスレッド プログラムをデバッグするための一般的な構成方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!