GDB 사용법

Yocto 프로젝트에서 생성된 이미지를 디버깅할 때 가장 많이 사용되는 도구 중 하나는 GNU Debugger(GDB)이다. GDB를 사용하면 런타임 시 프로그램의 동작을 추적하고 분석할 수 있다. 이를 통해 프로그램의 잘못된 동작을 수정하거나 성능을 최적화할 수 있다.

GDB 설정

Yocto 이미지를 디버깅하기 위해 먼저 GDB가 제대로 설치되었는지를 확인해야 한다. 이는 Yocto 빌드 시스템에 gdb 패키지를 포함시키는 것으로 해결할 수 있다.

  1. local.conf 파일 수정
    오픈임베디드에서 사용하는 local.conf 파일을 열고 다음 줄을 추가한다:

bash IMAGE_INSTALL_append = " gdb gdbserver"

  1. 이미지 빌드 및 확인
    수정이 완료되면 이미지를 다시 빌드한다.

bash bitbake core-image-minimal

  1. 이미지 설치 후 GDB 확인
    빌드된 이미지를 타겟 디바이스에 설치한 후, 터미널을 열고 GDB가 올바르게 설치되었는지 확인한다.

bash gdb --version

원격 디버깅

디버깅하고자 하는 애플리케이션이 타겟 디바이스에서 실행되고 있는 경우, GDB 서버를 사용하여 호스트 컴퓨터와 원격 디버깅을 수행할 수 있다.

  1. 타겟 디바이스에서 GDB 서버 실행
    디버깅할 애플리케이션을 gdbserver와 함께 실행한다. 예를 들어:

bash gdbserver :1234 ./my_application

  1. 호스트 컴퓨터에서 GDB 연결 설정
    호스트 컴퓨터에서 GDB를 실행하고 타겟 디바이스의 GDB 서버에 연결한다:

bash gdb ./my_application target remote <타겟 디바이스 IP>:1234

  1. 디버깅 명령어 사용
    이제 일반적인 GDB 명령어를 사용하여 디버깅을 진행할 수 있다. 예를 들어, 브레이크포인트 설정:

bash break main continue

Strace 사용법

strace는 시스템 콜과 프로세스가 사용하는 신호를 추적할 수 있는 유용한 도구이다. 이를 통해 프로그램의 동작을 이해하고 문제를 진단할 수 있다.

Strace 설치 및 실행

strace도 Yocto 이미지의 빌드 단계에서 포함시켜야 한다.

  1. local.conf 파일 수정
    오픈임베디드 local.conf 파일을 열고 다음 줄을 추가한다:

bash IMAGE_INSTALL_append = " strace"

  1. 이미지 빌드 및 확인
    이미지를 다시 빌드한다:

bash bitbake core-image-minimal

  1. 이미지 설치 후 Strace 사용
    빌드된 이미지를 타겟 디바이스에 설치한 후, strace를 사용하여 프로그램을 실행한다:

bash strace ./my_application

Strace의 주요 옵션

예제

다음은 strace를 사용하여 ls 명령어를 추적하는 예제이다:

strace -o output.txt -e trace=open,read,write ls

이를 통해 ls 명령어가 실행되는 동안 호출된 open, read, write 시스템 콜을 output.txt 파일에 저장할 수 있다.

튜토리얼을 마칠 때 이 방법들을 실행해보면서 각 도구가 생성하는 로그와 출력물을 분석하면, Yocto 프로젝트 디버깅 및 성능 최적화에 큰 도움이 될 수 있다. 필요한 경우 각 디버깅 도구의 문서를 참조하여 추가적인 기능과 사용법을 익히는 것도 유용하다.