Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
20.2.7. GDB를 사용하여 Forking 또는 Threaded programs 디버깅
일부 프로그램은 포크 또는 스레드를 사용하여 병렬 코드 실행을 수행합니다. 여러 동시 실행 경로를 디버깅하려면 특별한 고려 사항이 필요합니다.
사전 요구 사항
- 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는 현재 스레드 의 개념을 사용합니다. 기본적으로 명령은 현재 스레드에만 적용됩니다.
정보 스레드
-
id
및gid
숫자가 있는 스레드 목록을 표시하고 현재 스레드를 나타냅니다. 스레드 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
- 백그라운드에서 실행을 중지합니다.
추가 리소스
- GDB를 사용한 디버깅 - 여러 스레드로 4.10 디버깅 프로그램
- GDB를 사용한 디버깅 - 4.11 Forks 디버깅