검색

20.2.7. GDB를 사용하여 Forking 또는 Threaded programs 디버깅

download PDF

일부 프로그램은 포크 또는 스레드를 사용하여 병렬 코드 실행을 수행합니다. 여러 동시 실행 경로를 디버깅하려면 특별한 고려 사항이 필요합니다.

사전 요구 사항
  • GDB 디버거에 대한 이해
  • 프로세스의 개념 및 스레드 이해
GDB를 사용하여 포크된 프로그램 디버깅

포크는 프로그램(상위)이 자체(자체)의 독립적인 사본을 만들 때 발생하는것입니다. 다음 설정 및 명령을 사용하여 GDB의 발생 포크에 영향을 미칩니다.

  • follow-fork-mode 설정은 GDB가 포크 뒤의 상위 또는 하위 항목을 따르는지 여부를 제어합니다.

    follow-fork-mode 상위 설정
    중지한 후 상위 프로세스를 디버깅합니다. 이는 기본값입니다.
    follow-fork-mode 하위 설정
    중지한 후 하위 프로세스를 디버깅합니다.
    show follow-fork-mode
    follow-fork-mode 의 현재 설정을 표시합니다.
  • 설정된 detach-on-fork 설정은 GDB가 다른(후로) 프로세스를 계속 제어하거나 실행되도록 유지할지 여부를 제어합니다.

    detach-on-fork on 설정
    따르지 않는 프로세스( follow-fork-mode값에 따라 다름)는 분리되고 독립적으로 실행됩니다. 이는 기본값입니다.
    detach-on-fork off 설정
    GDB는 두 프로세스를 모두 제어합니다. 뒤에 오는 프로세스( follow-fork-mode값에 따라)는 정상적으로 디버그되지만 다른 프로세스는 일시 중지됩니다.
    show detach-on-fork
    detach-on-fork 의 현재 설정을 표시합니다.
GDB를 사용하여 스레드 프로그램 디버깅

GDB는 개별 스레드를 디버그하고 독립적으로 조작 및 검사할 수 있습니다. GDB가 검사된 스레드만 중지하도록 하려면 명령 집합을 사용하지 않고 에서 target-async를 설정합니다. 이러한 명령을 .gdbinit 파일에 추가할 수 있습니다. 해당 기능이 켜진 후 GDB는 스레드 디버깅을 수행할 준비가 되었습니다.

GDB는 현재 스레드 의 개념을 사용합니다. 기본적으로 명령은 현재 스레드에만 적용됩니다.

정보 스레드
idgid 숫자가 있는 스레드 목록을 표시하고 현재 스레드를 나타냅니다.
스레드 ID
지정된 id를 현재 스레드로 사용하여 스레드를 설정합니다.Sets the thread with the specified id as the current thread.
thread apply ids 명령
ids 가 나열된 모든 스레드에 command 명령을 적용합니다. ids 옵션은 공백으로 구분된 스레드 ID 목록입니다. 특수 값 all 은 모든 스레드에 명령을 적용합니다.
조건인 경우 위치 스레드 ID 중단
스레드 번호 id 에 대해서만 특정 조건이 있는 특정 위치에 정지됨을 설정합니다.
조사 표현식 스레드 ID
스레드 번호 ID 에 대해서만 표현식 으로 정의된 감시 지점을 설정합니다.
명령&
명령 명령을 실행하고 GDB 프롬프트 (gdb) 로 즉시 돌아가 백그라운드에서 코드 실행을 계속합니다.
interrupt
백그라운드에서 실행을 중지합니다.
추가 리소스
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.