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:
Tetapkan nombor utas paparan Masukkan arahan berikut dalam GDB untuk menetapkan nombor utas paparan:
(gdb) set backtrace limit 10
Salin selepas log masuk
Tetapkan tindanan paparan Masukkan arahan berikut dalam GDB untuk ditetapkan tindanan paparan :
(gdb) show scheduling
Salin selepas log masuk
Tetapkan untuk memaparkan maklumat benang Masukkan arahan berikut dalam GDB untuk menetapkan paparan maklumat benang:
(gdb) set scheduler-locking on
Salin selepas log masuk
Tetapkan untuk memaparkan lokasi kod pelaksanaan benang 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:
Tetapkan titik putus Masukkan arahan berikut dalam GDB untuk menetapkan titik putus:
(gdb) delete breakpoints
Salin selepas log masuk
Padam titik putus Masukkan arahan berikut dalam GDB untuk memadamkan titik putus:
rreee
rreee- mata
Masukkan arahan berikut dalam GDB untuk menetapkan titik pemantauan:
(gdb) watch variable_name
Salin selepas log masuk
- 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:
- Mulakan atur cara
Masukkan arahan berikut dalam GDB untuk memulakan atur cara:
(gdb) run
Salin selepas log masuk
- Jeda atur cara
Masukkan arahan berikut dalam GDB untuk menjeda program Melaksanakan program | Teruskan melaksanakan program Masukkan arahan berikut dalam GDB untuk terus melaksanakan program:
(gdb) Ctrl+C
Salin selepas log masuk
- 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!