UndoDB user Guide in Eclipse

TRACE32
이동: 둘러보기, 검색

 

Overview

본 자료는 Software Debugging Solution인 UndoDB를 소개하고 간단한 사용방법을 정리한 문서입니다.

Linux 기반의 application을 디버깅할 수 있는 UndoDB는 JTAG port와 같은 별도의 HW port가 필요없으며, Hardware Debugger를 사용하지 않습니다.

 

사용 환경

UndoDB를 사용할 수 있는 환경은 다음과 같습니다.

UndoDB는 기본적으로 command 방식으로 사용하는데 이를 해결하기 위해서 두 가지의 GUI를 제공합니다.

TRACE32 Powerview와 Eclipse를 이용해서 편리한 디버깅 환경을 제공하는데 해당 문서에서는 개발자들에게익숙한 Eclipse를 이용한 방법을 guide합니다.

현재 Eclipse 지원은 host가 Linux 환경에서만 가능하고, window환경은 추후 지원 예정입니다.

Linux 기반의 application을 디버깅하는 Software Debugging solution이기 때문에 Linux 환경은 대부분 지원이 가능합니다.

 

CPU

ARM / x86

Target OS

Linux

Eclipse 버전

Eclipse IDE for C/C++ Develpers

Mars.1 Release (4.5.1) 이상

 

준비 사항

Debugging Symbol

C/C++ 소스 레벨로 디버깅을 위해서는 symbol 정보가 필요합니다. Symbol 정보는 컴파일 시에 option에 의해 결정됩니다.

일반적으로 symbol 정보가 정상적으로 만들어지는 경우 makefile 내의 CFLAG 옵션에 –g 가 포함이 되어 있습니다. Symbol정보가 정상적으로 만들어진 경우 디버깅 시 C/C++ 소스 레벨로 디버깅이 가능합니다.

Symbol 파일이 정상적으로 만들어졌는지 확인하고자 할 때는 linux 명령어 중 file/readelf 명령어를 이용해서 확인 가능합니다.

 

UndoDB server 포팅

UndoDB는 server와 client 간의 communication을 통해 얻은 디버깅 정보를 활용하는 Software debugging tool입니다. 그렇기 때문에 통신을 위한 server를 target에 포팅하는 작업이 필요합니다.

별도의 컴파일 작업은 필요없고, license key와 server를 target의 특정 file system 공간에 넣어주시면 됩니다.

 

해당 server는 동작 중 임시 정보를 target filesystem의 tmp 디렉토리에 저장합니다. 이런 이유로 tmp 디렉토리 권한에 write 속성을 셋팅해야 합니다.

 

그 외 준비사항

Linux 환경의 경우 Ethernet 통신을 위한 LAN port 연결, Serial 메시지와 명령어 수행을 위한 UART 연결이 필요합니다.

 

UndoDB 설정 및 실행

UndoDB를 사용하기 위해 eclipse의 remote 설정을 진행합니다.

 

Eclipse 설정

1)     Eclipse를 실행한 뒤 Run->Debug Configurations… 메뉴를 선택합니다.

 

2)     C/C++ Remote Application 탭에서 우클릭 후 New를 선택합니다.

 

3)     Targer과의 connection을 위한 설정을 진행합니다. Connection 메뉴에서 New를 선택합니다

 

4)     SSH Only를 선택하고 Next를 클릭합니다.

5)     Connection 할 target의 name과 ip, user id를 입력한 후 OK 버튼을 클릭합니다.

 

6)     Debugging을 위한 symbol 위치(host pc에서의 경로)와 target의 application 위치를 입력합니다. Target의 app을 디버깅하기 위해서는 다운로드 속성을 skip합니다.

7)     Debugger 탭으로 이동한 후 undodb-gdb 가 있는 host pc의 위치를 입력합니다. Undodb를 이용한 reverse debugging을 위해서 reverse 기능을 enable 합니다.

 

8)     Debugger 내의 Gdbserver Settings 탭으로 이동한 후 target에 위치한 undodb-server 경로를 입력합니다.

 

해당 환경 설정까지가 Eclipse를 이용한 remote 디버깅을 위한 환경 설정입니다.

만약 다른 application을 디버깅하기 위해서는 main 탭에서 symbol 위치와 application 위치를 변경하면 됩니다. ( 6번 항목 참고)

 

 

 

 

 

 

 


Debugging

Application Main Debugging

1)     Chapter 2에서 셋팅한 remote name을 선택하면 셋팅된 application을 디버깅할 수 있습니다.

2)     이미 셋팅된 설정에 의해 자동으로 connection이 이루어지며, 모든 설정이 완료되면 해당 application의 main 함수에 멈춘 것을 확인할 수 있습니다.

3)     Forward 버튼과 reverse 버튼을 이용한 디버깅을 진행할 수 있습니다.

 

Application Attach Debugging

Attach 방식을 사용하기 위해서는 별도의 script를 이용해서 수행하도록 합니다.

1)     먼저 실행되고 있는 application의 pid를 확인합니다. powergdbedu라는 application이 실행되고 있으며, pid가 853 인 것을 확인할 수 있습니다.

2)     해당 application 디버깅을 위해 별도의 script를 작성합니다. attach.sh script로 작성된 내용은 아래와 같습니다.

 

3)     Eclipse의 remote 설정에서 gdbserver 셋팅을 해당 script를 실행하도록 변경합니다.

4)     Eclispse에서 설정한 remote를 선택해서 디버깅을 시도합니다.

5)     실행 중인 application을 attach 방식으로 연결이 되며, 연결되는 시점을 기준으로 디버깅이 가능합니다.

Reverse 기능 활용

Eclipse에서 UndoDB를 사용하면 reverse 기능을 이용할 수 있습니다.

Reverse 디버깅을 하기 위해서는 eclipse의 상단 메뉴를 이용하면 됩니다.

디버깅 방법은 TRACE32 Powerview에서 사용하는 방법과 동일합니다.