logo

GDB(단계별 소개)

GDB는 GNU 프로젝트 디버거(GNU Project Debugger)를 나타내며 C(C++와 같은 다른 언어와 함께)를 위한 강력한 디버깅 도구입니다. C 프로그램이 실행되는 동안 내부를 살펴보는 데 도움이 되며 프로그램이 충돌할 때 정확히 무슨 일이 일어나는지 확인할 수도 있습니다. GDB는 컴파일 프로세스에 의해 생성된 바이너리 파일인 실행 파일에서 작동합니다.

데모 목적으로 아래 예제는 아래 사양의 Linux 시스템에서 실행됩니다.



uname -a>
이름을 밝히다

uname -a

다음을 수행하여 배우자: –

GDB 시작

Linux 명령 프롬프트로 이동하여 gdb를 입력합니다.

gdb>

gdb



사용자 이름

Gdb 열기 프롬프트를 통해 명령을 수행할 준비가 되었음을 알 수 있습니다. gdb를 종료하려면 quit 또는 q를 입력하십시오.

quit_gdb

종료합니다

코드 컴파일

아래는 C99를 사용하여 컴파일할 때 정의되지 않은 동작을 보여주는 프로그램입니다. 목록-1



메모: 자동 저장 기간이 있는 개체가 명시적으로 초기화되지 않으면 해당 값은 불확실합니다. 여기서 불확정 값은 지정되지 않은 값이거나 트랩 표현입니다.

이제 코드를 컴파일하세요. (여기 test.c). g 플래그 이는 스택 프레임에서 변수와 함수의 적절한 이름을 볼 수 있고, 행 번호를 얻고, 실행 파일을 둘러볼 때 소스를 볼 수 있다는 것을 의미합니다. -std=C99 플래그 표준 C99를 사용하여 코드를 컴파일한다는 의미입니다. -o 플래그 빌드 출력을 출력 파일에 씁니다.

gcc -std=c99 -g -o test test.C>

gcc -std=c99 -g -o 테스트 테스트.C

생성된 실행 파일로 GDB 실행

컴파일된 실행 파일로 GDB를 시작하려면 다음 명령을 입력하십시오.

gdb ./test>

gdb ./테스트

유용한 GDB 명령:

다음은 GDB를 시작하는 데 유용한 몇 가지 명령입니다.

명령 설명
실행 또는 r 프로그램을 처음부터 끝까지 실행합니다.
휴식 또는 b 특정 줄에 중단점을 설정합니다.
장애를 입히다 중단점을 비활성화합니다.
~할 수 있게 하다 비활성화된 중단점을 활성화합니다.
다음 또는 n 기능을 자세히 살펴보지 않고 다음 코드 줄을 실행합니다.
단계 다음 명령으로 이동하여 함수를 살펴봅니다.
목록 또는 내가 코드를 표시합니다.
인쇄 또는 p 변수의 값을 표시합니다.
그만두거나 q GDB를 종료합니다.
분명한 모든 중단점을 지웁니다.
계속하다 정상적인 실행을 계속합니다.

코드 표시

이제 gdb 프롬프트에 l을 입력하여 코드를 표시합니다.

중단점

코드 표시

중단점 설정

5번째 줄에 중단점을 추가해 보겠습니다.

info_b

중단점 설정

다른 줄에 중단점을 두려면 b를 입력하면 됩니다. 라인_번호 .기본적으로 목록 또는 처음 10줄만 표시합니다.

중단점 보기

중단점을 보려면 info b를 입력합니다.

장애를 입히다

중단점 보기

중단점 비활성화

위의 작업을 수행한 후 마음이 바뀌어 되돌리고 싶다고 가정해 보겠습니다. 비활성화를 입력합니다. b.

활성화-1

중단점 비활성화

추상 수업

비활성화된 중단점을 다시 활성화합니다.

파란색 원으로 표시된 것처럼 Enb는 비활성화를 의미하는 n이 됩니다. 9. 최근 비활성화된 중단점을 다시 활성화합니다. 활성화를 입력합니다. b.

처음 실행

비활성화된 중단점을 다시 활성화합니다.

코드 실행

run 또는 r을 입력하여 코드를 실행합니다. 중단점을 설정하지 않은 경우 run 명령은 단순히 전체 프로그램을 실행합니다.

print_value_x

코드 실행

변수 값 인쇄

변수의 값을 보려면 print를 입력하십시오. 변수_이름 또는 피 변수_이름 .

변수 값 인쇄

위는 실행 시 x에 저장된 값을 보여줍니다.

변수 값 변경

gdb에서 변수 값을 변경하고 변경된 값으로 계속 실행하려면 set을 입력합니다. 변수_이름 .

디버깅 출력

아래 스크린샷은 왜 쓰레기 값을 출력으로 얻었는지 확실히 이해할 수 있는 변수 값을 보여줍니다. 를 실행할 때마다 . /시험 우리는 다른 출력을 받게 될 것입니다.

연습: 처음 실행 시 gdb에서 set x = 0을 사용해 보고 c의 출력을 확인하세요.

디버깅 출력

GDB는 스택, 메모리, 스레드 검사, 프로그램 조작 등과 같이 코드를 디버그하고 이해하는 더 많은 방법을 제공합니다. 위의 예가 gdb를 시작하는 데 도움이 되기를 바랍니다.

결론

이 기사에서는 C 프로그램 디버깅에 사용되는 Linux의 강력한 도구인 GDB(GNU Debugger)에 대해 설명했습니다. 우리는 디버깅 정보로 코드를 컴파일하고, GDB를 실행하고, 중단점을 설정하고, 변수를 검사하고, 프로그램 동작을 분석할 수 있도록 다음 단계 중 일부를 논의했습니다. 또한 코드 검사, 중단점 관리, 변수 조작 및 프로그램 실행 제어와 같은 GDB 기능에 대해 논의하여 효율적으로 디버그하고 문제 해결을 수행할 수 있도록 했습니다.