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 디버깅