> 운영 및 유지보수 > 리눅스 운영 및 유지 관리 > Linux에서 다중 스레드 프로그램을 디버깅하기 위해 GDB를 사용하는 일반적인 구성 방법

Linux에서 다중 스레드 프로그램을 디버깅하기 위해 GDB를 사용하는 일반적인 구성 방법

WBOY
풀어 주다: 2023-07-04 14:49:10
원래의
1908명이 탐색했습니다.

GDB를 사용하여 Linux에서 멀티스레드 프로그램을 디버그하는 일반적인 구성 방법

소개:
멀티스레드 프로그래밍에서 디버깅은 필수 작업입니다. GDB는 멀티스레드 프로그램에서 오류를 찾아 해결하는 데 도움을 주는 강력한 디버거입니다. 이 기사에서는 GDB를 사용하여 Linux에서 멀티스레드 프로그램을 디버깅하는 일반적인 구성 방법을 소개하고 코드 예제를 제공하여 독자가 GDB를 더 잘 이해하고 사용할 수 있도록 돕습니다.

1. GDB 설치
먼저 Linux 시스템에 GDB를 설치해야 합니다. 설치를 완료하려면 터미널에 다음 명령을 입력하세요.

$ sudo apt-get install gdb
로그인 후 복사

2. 멀티 스레드 프로그램 컴파일
멀티 스레드 프로그램을 디버깅하기 전에 먼저 간단한 멀티 스레드 프로그램을 작성하고 컴파일해야 합니다. 다음은 샘플 프로그램의 코드입니다.

#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);
}
로그인 후 복사

위의 코드를 multithread.c라는 파일에 저장하고 다음 명령을 사용하여 컴파일합니다. multithread.c的文件中,并使用以下命令进行编译:

$ gcc -g -pthread -o multithread multithread.c
로그인 후 복사

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

$ gdb multithread
로그인 후 복사

Where, - g 옵션은 실행 파일에 디버깅 정보를 추가하는 데 사용되며, -pthread 옵션은 멀티 스레드 라이브러리를 도입하는 데 사용됩니다.


3. GDB 디버깅 시작

컴파일이 완료된 후 GDB를 사용하여 디버깅을 시작할 수 있습니다. 터미널에 다음 명령을 입력하세요:

(gdb) set print thread-events off
로그인 후 복사

4. GDB 디버깅 옵션 구성

GDB에는 멀티스레드 프로그램을 더 잘 디버깅하는 데 도움이 되는 몇 가지 디버깅 옵션이 있습니다. 다음 명령을 입력하여 구성할 수 있습니다.

  1. 디스플레이 스레드 번호 설정
  2. 디스플레이 스레드 번호를 설정하려면 GDB에 다음 명령을 입력합니다.
    (gdb) set backtrace limit 10
    로그인 후 복사

  1. 디스플레이 스택을 설정합니다.
  2. GDB에서 다음 명령을 입력하여 설정합니다. 디스플레이 스택 :
    (gdb) show scheduling 
    로그인 후 복사

  1. 스레드 정보를 표시하도록 설정
  2. 스레드 정보 표시를 설정하려면 GDB에서 다음 명령을 입력하세요.
    (gdb) set scheduler-locking on
    로그인 후 복사

  1. 스레드 실행 코드 위치를 표시하도록 설정
  2. GDB에서 다음 명령을 입력하세요 스레드 실행 표시 설정 코드 위치:

(gdb) break function_name
로그인 후 복사

5. 중단점 및 모니터링 지점 설정

디버깅 프로세스 중에 중단점 및 모니터링 지점을 설정하여 프로그램의 실행 흐름을 제어할 수 있습니다. 다음은 일반적으로 사용되는 몇 가지 명령 예입니다.

  1. 중단점 설정
  2. 중단점을 설정하려면 GDB에서 다음 명령을 입력하세요.
    (gdb) delete breakpoints
    로그인 후 복사

  1. 중단점 삭제
  2. 중단점을 삭제하려면 GDB에서 다음 명령을 입력하세요.
    (gdb) watch variable_name
    로그인 후 복사

  1. 모니터링 설정 points
  2. 모니터링 포인트를 설정하려면 GDB에 다음 명령을 입력하세요.
    (gdb) delete watchpoints
    로그인 후 복사

  1. 모니터링 포인트 삭제
  2. 모니터링 포인트를 삭제하려면 GDB에 다음 명령을 입력하세요.

(gdb) run
로그인 후 복사

6. 멀티 스레드 프로그램 디버깅

GDB에서는 다음을 수행할 수 있습니다. 멀티스레드 프로그램을 디버그하려면 다음 명령을 사용하세요:

  1. 프로그램 시작
  2. 프로그램을 시작하려면 GDB에 다음 명령을 입력하세요:
    (gdb) Ctrl+C
    로그인 후 복사

  1. 프로그램을 일시 중지하세요
  2. 프로그램을 일시 중지하려면 GDB에 다음 명령을 입력하세요 프로그램 실행 :
    (gdb) info threads
    로그인 후 복사

  1. 모든 스레드 나열
  2. 모든 스레드를 나열하려면 GDB에서 다음 명령을 입력하세요.
    (gdb) thread thread_id
    로그인 후 복사

  1. 지정된 스레드로 전환
  2. 지정된 스레드로 전환하려면 GDB에서 다음 명령을 입력하세요.
    (gdb) continue
    로그인 후 복사

  1. 프로그램을 계속 실행하세요
  2. 프로그램을 계속 실행하려면 GDB에 다음 명령을 입력하세요:

    rrreee
    VII. 요약

    이 글에서는 GDB를 사용하여 Linux에서 멀티스레드 프로그램을 디버그하는 일반적인 구성 방법을 소개하고 코드 예제를 제공합니다. . 디버깅 옵션을 적절하게 구성하고 해당 명령을 사용함으로써 멀티 스레드 프로그램의 문제를 효과적으로 제어하고 찾을 수 있으며 디버깅 효율성과 정확성을 향상시킬 수 있습니다. 이 기사가 독자의 다중 스레드 디버깅에 도움이 되고 더 많은 학습과 실습에 영감을 줄 수 있기를 바랍니다. 🎜

    위 내용은 Linux에서 다중 스레드 프로그램을 디버깅하기 위해 GDB를 사용하는 일반적인 구성 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿