Buildroot GDB server 설치 및 사용

타켓보드의 GDB Server에 연결하려면 호스트는 gdb-multiarch 필요하다. gdb-multiarch는 우분투 기본 저장소에 등록되어 있어 PPA 추가없이 설치가 가능하다.

$ sudo apt install gdb-multiarch

Buildroot GDB server 패키지를 추가해야 하며, 빌드 옵션은 가급적 'debug_level=0'으로 설정하고 '-g' 옵션을 추가하도록 한다. 그리고 방화벽이 설정되어 있다면 GDB가 사용할 포트번호는 허용해야 한다.

참고로, 방화벽 설정은 BR2_PACKAGE_GDB_SERVER 옵션이 추가되면 8844 포트를 허용하였으나, 방화벽 변경 사항 및 GDB 라이브러리 및 바이너리 추가로 rootfs가 변경되어 타겟보드에 rootfs 이미지를 re-write 해야 한다.

 

타겟보드에서 GDB server 실행은 아래와 같이 'IP:PortNum <app>'로 실행한다.

$ gdbserver 192.168.0.12:8844 /usr/bin/main_app

호스트 PC는 gdb-multicarch를 실행하며 타겟보드에서 실행한 프로그램을 실행하도록 한다. 스테이징 디렉토리인 sysroot 디렉토리가 필요하다면 아래와 같이 설정할 수 있다.

$ gdb-multiarch output/build/happ-custom/output/main_app
set sysroot output/staging
target remote 192.168.0.12:8844
c