Rumah > Operasi dan penyelenggaraan > operasi dan penyelenggaraan linux > 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
Lepaskan: 2023-07-04 14:49:10
asal
1908 orang telah melayarinya

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
Salin selepas log masuk

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);
}
Salin selepas log masuk

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

$ gcc -g -pthread -o multithread multithread.c
Salin selepas log masuk

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

$ gdb multithread
Salin selepas log masuk

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
Salin selepas log masuk

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
    Salin selepas log masuk

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

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

  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
Salin selepas log masuk

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
    Salin selepas log masuk

  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
Salin selepas log masuk
  1. Padam titik pemantauan
    Masukkan arahan berikut dalam GDB untuk memadam titik pemantauan:
(gdb) delete watchpoints
Salin selepas log masuk

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
Salin selepas log masuk
  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
    Salin selepas log masuk
  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.
  2. 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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan