GDB 사용법
Yocto 프로젝트에서 생성된 이미지를 디버깅할 때 가장 많이 사용되는 도구 중 하나는 GNU Debugger(GDB)이다. GDB를 사용하면 런타임 시 프로그램의 동작을 추적하고 분석할 수 있다. 이를 통해 프로그램의 잘못된 동작을 수정하거나 성능을 최적화할 수 있다.
GDB 설정
Yocto 이미지를 디버깅하기 위해 먼저 GDB가 제대로 설치되었는지를 확인해야 한다. 이는 Yocto 빌드 시스템에 gdb 패키지를 포함시키는 것으로 해결할 수 있다.
- local.conf 파일 수정
오픈임베디드에서 사용하는local.conf
파일을 열고 다음 줄을 추가한다:
bash
IMAGE_INSTALL_append = " gdb gdbserver"
- 이미지 빌드 및 확인
수정이 완료되면 이미지를 다시 빌드한다.
bash
bitbake core-image-minimal
- 이미지 설치 후 GDB 확인
빌드된 이미지를 타겟 디바이스에 설치한 후, 터미널을 열고 GDB가 올바르게 설치되었는지 확인한다.
bash
gdb --version
원격 디버깅
디버깅하고자 하는 애플리케이션이 타겟 디바이스에서 실행되고 있는 경우, GDB 서버를 사용하여 호스트 컴퓨터와 원격 디버깅을 수행할 수 있다.
- 타겟 디바이스에서 GDB 서버 실행
디버깅할 애플리케이션을gdbserver
와 함께 실행한다. 예를 들어:
bash
gdbserver :1234 ./my_application
- 호스트 컴퓨터에서 GDB 연결 설정
호스트 컴퓨터에서 GDB를 실행하고 타겟 디바이스의 GDB 서버에 연결한다:
bash
gdb ./my_application
target remote <타겟 디바이스 IP>:1234
- 디버깅 명령어 사용
이제 일반적인 GDB 명령어를 사용하여 디버깅을 진행할 수 있다. 예를 들어, 브레이크포인트 설정:
bash
break main
continue
Strace 사용법
strace
는 시스템 콜과 프로세스가 사용하는 신호를 추적할 수 있는 유용한 도구이다. 이를 통해 프로그램의 동작을 이해하고 문제를 진단할 수 있다.
Strace 설치 및 실행
strace도 Yocto 이미지의 빌드 단계에서 포함시켜야 한다.
- local.conf 파일 수정
오픈임베디드local.conf
파일을 열고 다음 줄을 추가한다:
bash
IMAGE_INSTALL_append = " strace"
- 이미지 빌드 및 확인
이미지를 다시 빌드한다:
bash
bitbake core-image-minimal
- 이미지 설치 후 Strace 사용
빌드된 이미지를 타겟 디바이스에 설치한 후, strace를 사용하여 프로그램을 실행한다:
bash
strace ./my_application
Strace의 주요 옵션
-o file
: 출력 내용을 파일로 저장-e trace=set
: 특정 시스템 콜만 추적-p pid
: 실행 중인 프로세스를 추적
예제
다음은 strace
를 사용하여 ls
명령어를 추적하는 예제이다:
strace -o output.txt -e trace=open,read,write ls
이를 통해 ls
명령어가 실행되는 동안 호출된 open
, read
, write
시스템 콜을 output.txt
파일에 저장할 수 있다.
튜토리얼을 마칠 때 이 방법들을 실행해보면서 각 도구가 생성하는 로그와 출력물을 분석하면, Yocto 프로젝트 디버깅 및 성능 최적화에 큰 도움이 될 수 있다. 필요한 경우 각 디버깅 도구의 문서를 참조하여 추가적인 기능과 사용법을 익히는 것도 유용하다.