GDB 사용 설명서
파일 목록
실행 프로그램
3: 데이터 표시
4: 정지점 (breakpoint)
정지점 관리
6. 변수의 검사 와 할당
일방 통행
함수 호출
9. 기계 언어 도구
신호
GDB 사용법
약술 하 다
파일 목록
(gdb) list line1,line2
실행 프로그램
디 버 깅 을 준비 하 는 프로그램 을 실행 하려 면 run 명령 을 사용 할 수 있 습 니 다. 그 뒤에 이 프로그램 에 보 내 는 모든 인 자 를 따라 갈 수 있 습 니 다. 표준 입력 과 표준 출력 설명자 (< 와 >) 와 케이스 어댑터 (*,?, [,] 를 포함 합 니 다.인자 가 없 는 run 명령 을 사용 하면 gdb 는 이전 run 명령 의 인 자 를 다시 사용 합 니 다. 이것 은 매우 유용 합 니 다.set args 명령 을 이용 하면 프로그램 에 보 내 는 인 자 를 수정 할 수 있 으 며, show args 명령 을 사용 하면 결 성 된 인자 의 목록 을 볼 수 있 습 니 다.
(gdb)set args –b –x
(gdb) show args
backtrace命令为堆栈提供向后跟踪功能。
Backtrace 命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。
3: 데이터 표시
(gdb) print p (p为变量名)
print 는 gdb 의 기능 이 매우 강 한 명령 으로 디 버 깅 된 언어 에서 효과 적 인 표현 식 을 표시 할 수 있 습 니 다.표현 식 은 프로그램의 변 수 를 포함 하 는 것 외 에 다음 과 같은 내용 도 포함 할 수 있 습 니 다. (gdb) print find_entry(1,0)
(gdb) print *table_start
$8={e=reference=’/000’,location=0x0,next=0x0}
(gdb)print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值)
(gdb)print h@10
$13=(-1,345,23,-234,0,0,0,98,345,10)
(gdb) whatis p
type = int *
break 명령 (b 로 간략화 가능) 은 디 버 깅 프로그램 에서 정지점 을 설정 할 수 있 습 니 다. 이 명령 은 다음 과 같은 네 가지 형식 이 있 습 니 다.
(gdb) break filename:line-number
(gdb) break filename:function-name
조건 부 정지점 을 설정 하려 면 break if 명령 을 사용 할 수 있 습 니 다. 다음 과 같 습 니 다.
(gdb) break line-or-function if expr
例:
(gdb) break 46 if testsize==100
정지점 에서 계속 실행: continue 명령
정지점 관리
1. 현재 gdb 의 정지점 정보 보이 기:
(gdb) info break
그 는 다음 과 같은 형식 으로 모든 정지점 정 보 를 표시 할 것 이다.
Num Type Disp Enb Address What
1 breakpoint keep y 0x000028bc in init_random at qsort2.c:155
2 breakpoint keep y 0x0000291c in init_organ at qsort2.c:168
(gdb) delete breakpoint 1
이 명령 은 번호 가 1 인 정지점 을 삭제 합 니 다. 번호 파라미터 가 없 으 면 모든 정지점 (gdb) delete breakpoint
(gdb) disable breakpoint 1
이 명령 은 정지점 1 을 금지 하고 정지점 정 보 를 차단 하 는 (Enb) 도 메 인 은 n (gdb) enable breakpoint 1
주: number 는 원본 파일 의 한 코드 줄 의 줄 번호 6. 변수의 검사 와 할당
일방 통행
함수 호출
(gdb)clean number
gdb 변 수 는 컴퓨터 의 유 니 버 설 레지스터 를 검사 하고 수정 할 수 있 는 전용 gdb 변 수 를 제공 합 니 다. gdb 는 현재 모든 컴퓨터 에서 실제 사용 하고 있 는 4 개의 레지스터 의 표준 이름 을 제공 합 니 다.
gdb 는 보통 대부분의 신 호 를 포착 할 수 있 습 니 다. 신 호 를 포착 하면 실행 중인 프로 세 스에 대해 어떤 일 을 해 야 할 지 결정 할 수 있 습 니 다.예 를 들 어 CTRL - C 를 누 르 면 중단 신 호 를 gdb 에 보 내 면 gdb 가 종 료 됩 니 다.그러나 gdb 를 중단 하고 싶 지 않 을 수도 있 습 니 다. 진정한 목적 은 gdb 가 실행 중인 프로그램 을 중단 하 는 것 입 니 다. 따라서 gdb 는 이 신 호 를 잡 고 실행 중인 프로그램 을 중단 해 야 합 니 다. 그러면 일부 디 버 깅 작업 을 수행 할 수 있 습 니 다.
Handle 명령 은 신호 처 리 를 제어 할 수 있 습 니 다. 그 는 두 개의 매개 변 수 를 가지 고 있 습 니 다. 하 나 는 신호 이름 이 고 다른 하 나 는 신 호 를 받 을 때 무엇 을 해 야 합 니까?몇 가지 가능 한 매개 변 수 는:
예 를 들 어 디 버 깅 중인 프로그램 이 이 신 호 를 받 아들 이지 않도록 SIGPIPE 신 호 를 캡 처 했다 고 가정 하고 이 신호 가 도착 하면 프로그램 이 중단 되 고 알려 달라 고 요구 합 니 다.이 임 무 를 완성 하려 면 다음 명령 을 사용 할 수 있 습 니 다.
(gdb) call gen_and_sork( 1234,1,0 )
(gdb) call printf(“abcd”)
$1=4
유 닉 스 의 신호 명 은 항상 대문자 로 되 어 있 으 니 주의 하 세 요!신호 이름 대신 신호 번 호 를 사용 할 수 있 습 니 다. 프로그램 이 모든 신호 처리 작업 을 수행 하려 면 신호 처리 프로그램 을 테스트 할 수 있어 야 합 니 다. 이 를 위해 서 는 신 호 를 프로그램 에 보 낼 수 있 는 간편 한 방법 이 필요 합 니 다. 이것 이 바로 signal 명령 의 임무 입 니 다.이 명령 의 인 자 는 SIGINT 와 같은 숫자 나 이름 입 니 다.프로그램 이 전용 SIGINT (키보드 입력 또는 CTRL - C; 신호 2) 신호 처리 프로그램 을 청소 동작 으로 설정 했다 고 가정 합 니 다. 이 신호 처리 프로그램 을 테스트 하려 면 정지점 을 설정 하고 다음 명령 을 사용 할 수 있 습 니 다.
(gdb) handle SIGPIPE stop print
이 프로그램 은 계속 실행 되 지만 즉시 이 신 호 를 전송 하고 처리 프로그램 이 실행 되 기 시작 합 니 다.
GDB 사용법
(gdb) signal 2
continuing with signal SIGINT(2)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LINUX 시리즈(1부)UNIX는 1969년 AT&T에서 개발한 운영 체제입니다. UNIX는 다중 사용자, 다중 프로세스 운영 체제입니다. 기본적으로 사용 가능한 두 가지 기본 UNIX 버전이 있습니다. 대부분의 UNIX 버전은 이러한 버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.