Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat atur cara berbilang benang di bawah Linux

Kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat atur cara berbilang benang di bawah Linux

WBOY
WBOYasal
2023-07-04 14:49:101791semak imbas

Kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat atur cara berbilang benang di bawah Linux

Pengenalan:
Dalam pengaturcaraan berbilang benang, nyahpepijat adalah tugas penting. GDB ialah penyahpepijat berkuasa yang boleh membantu kami mencari dan menyelesaikan ralat dalam atur cara berbilang benang. Artikel ini akan memperkenalkan kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat atur cara berbilang benang di bawah Linux dan memberikan contoh kod, dengan harapan dapat membantu pembaca memahami dan menggunakan GDB dengan lebih baik.

1. Pasang GDB
Pertama, kita perlu memasang GDB dalam sistem Linux. Masukkan arahan berikut dalam terminal untuk melengkapkan pemasangan:

$ sudo apt-get install gdb

2. Susun atur cara berbilang benang
Sebelum menyahpepijat atur cara berbilang benang, kita perlu menulis dan menyusun atur cara berbilang benang yang mudah dahulu. Berikut ialah kod program contoh:

#include <stdio.h>
#include <pthread.h>

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

Kami menyimpan kod di atas ke fail bernama multithread.c dan menyusunnya menggunakan arahan berikut: multithread.c的文件中,并使用以下命令进行编译:

$ gcc -g -pthread -o multithread multithread.c

其中,-g选项用于在可执行文件中加入调试信息,-pthread

$ gdb multithread

Di mana, - The Pilihan g digunakan untuk menambah maklumat penyahpepijatan pada fail boleh laku dan pilihan -pthread digunakan untuk memperkenalkan perpustakaan berbilang benang.


3. Mulakan penyahpepijatan GDB

Selepas melengkapkan kompilasi, kita boleh menggunakan GDB untuk memulakan penyahpepijatan. Masukkan arahan berikut dalam terminal:

(gdb) set print thread-events off

4. Konfigurasikan pilihan penyahpepijatan GDB

Dalam GDB, terdapat beberapa pilihan penyahpepijatan yang boleh membantu kami menyahpepijat program berbilang benang dengan lebih baik. Kita boleh mengkonfigurasinya dengan memasukkan arahan berikut:

  1. Tetapkan nombor utas paparan
  2. Masukkan arahan berikut dalam GDB untuk menetapkan nombor utas paparan:
    (gdb) set backtrace limit 10

  1. Tetapkan tindanan paparan
  2. Masukkan arahan berikut dalam GDB untuk ditetapkan tindanan paparan :
    (gdb) show scheduling 

  1. Tetapkan untuk memaparkan maklumat benang
  2. Masukkan arahan berikut dalam GDB untuk menetapkan paparan maklumat benang:
    (gdb) set scheduler-locking on

  1. Tetapkan untuk memaparkan lokasi kod pelaksanaan benang
  2. Masukkan arahan berikut dalam GDB untuk menetapkan paparan pelaksanaan thread Lokasi kod:

(gdb) break function_name

5. Tetapkan titik putus dan titik pemantauan

Semasa proses penyahpepijatan, kami boleh menetapkan titik putus dan titik pemantauan untuk mengawal aliran pelaksanaan program. Berikut ialah beberapa contoh arahan yang biasa digunakan:

  1. Tetapkan titik putus
  2. Masukkan arahan berikut dalam GDB untuk menetapkan titik putus:
    (gdb) delete breakpoints

  1. Padam titik putus
  2. Masukkan arahan berikut dalam GDB untuk memadamkan titik putus:
rreee
    rreee
  1. mata
    Masukkan arahan berikut dalam GDB untuk menetapkan titik pemantauan:
(gdb) watch variable_name
  1. Padam titik pemantauan
    Masukkan arahan berikut dalam GDB untuk memadam titik pemantauan:
(gdb) delete watchpoints

6. Menyahpepijat program berbilang benang
Dalam GDB gunakan arahan berikut untuk nyahpepijat atur cara berbilang benang:

  1. Mulakan atur cara
    Masukkan arahan berikut dalam GDB untuk memulakan atur cara:
(gdb) run
  1. Jeda atur cara
    Masukkan arahan berikut dalam GDB untuk menjeda program Melaksanakan program | Teruskan melaksanakan program
  2. Masukkan arahan berikut dalam GDB untuk terus melaksanakan program:
    (gdb) Ctrl+C
  1. VII
    Artikel ini memperkenalkan kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat program berbilang benang di bawah Linux, dan dilengkapi dengan contoh Kod. . Dengan mengkonfigurasi pilihan penyahpepijatan dengan betul dan menggunakan arahan yang sepadan, kami boleh mengawal dan mengesan masalah dengan baik dalam program berbilang benang dan meningkatkan kecekapan dan ketepatan penyahpepijatan. Saya harap artikel ini dapat membantu pembaca dalam penyahpepijatan berbilang benang dan memberi inspirasi kepada lebih banyak pembelajaran dan latihan.

Atas ialah kandungan terperinci Kaedah konfigurasi biasa untuk menggunakan GDB untuk menyahpepijat atur cara berbilang benang di bawah Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn