KR20010038205A - 내장형 실시간 소프트웨어의 원격 디버깅을 위한 디버그 에이전트 장치 및 그 운용 방법 - Google Patents

내장형 실시간 소프트웨어의 원격 디버깅을 위한 디버그 에이전트 장치 및 그 운용 방법 Download PDF

Info

Publication number
KR20010038205A
KR20010038205A KR1019990046089A KR19990046089A KR20010038205A KR 20010038205 A KR20010038205 A KR 20010038205A KR 1019990046089 A KR1019990046089 A KR 1019990046089A KR 19990046089 A KR19990046089 A KR 19990046089A KR 20010038205 A KR20010038205 A KR 20010038205A
Authority
KR
South Korea
Prior art keywords
service
request
function
host system
context
Prior art date
Application number
KR1019990046089A
Other languages
English (en)
Other versions
KR100334904B1 (ko
Inventor
손승우
공기석
김흥남
Original Assignee
정선종
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 정선종, 한국전자통신연구원 filed Critical 정선종
Priority to KR1019990046089A priority Critical patent/KR100334904B1/ko
Publication of KR20010038205A publication Critical patent/KR20010038205A/ko
Application granted granted Critical
Publication of KR100334904B1 publication Critical patent/KR100334904B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Abstract

본 발명은 내장형 실시간 소프트웨어의 교차 디버깅 환경에서 원격 디버깅을 위한 디버그 에이전트 장치 및 그 운용 방법을 제공하는데 그 목적이 있다.
본 발명에 따르면, 타겟 시스템(Target System)에서 수행되는 프로그램을 호스트 시스템(Host System)에서 소스 레벨 디버깅(Source Level Debugging)하는 원격 디버깅(Remote Debugging)을 실현하기 위한 디버그 에이전트(Debug Agent) 장치에 있어서, 상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떤 형태의 서비스 요청인가를 판단하는 메인 모듈과; 상기 메인 모듈에서 요청받은 서비스 종류에 따라 해당 서비스를 수행하는 서비스 수행 모듈과; 상기 서비스 수행 모듈에 의하여 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 통신 모듈을 포함하여 이루어진 것을 특징으로 하는 디버그 에이전트 장치가 제공된다.

Description

내장형 실시간 소프트웨어의 원격 디버깅을 위한 디버그 에이전트 장치 및 그 운용 방법 {An apparatus and method for remote debugging of embedded real - time software}
본 발명은 내장형 실시간 소프트웨어의 원격 디버깅을 위한 디버그 에이전트 장치 및 그 운용 방법에 관한 것이며, 특히, 타겟 시스템에 적재된 실시간 운영 체제에 종속적이지 않게 호스트의 원격 디버깅 서비스를 처리하며, 호스트에서 요청하는 서비스의 종류에 따라 해당 서비스를 수행하는 디버그 에이전트 장치 및 그 방법에 관한 것이다.
최근 인터넷의 폭발적 성장과 함께 나타난 두드러진 현상은 컴퓨터뿐만 아니라, 다양한 정보 기기들이 인터넷에 직접 접속되기 시작하였다는 것이다. 전화기, TV, PDA 및 공작 기계등은 물론이고 냉장고, 전자 레인지 등의 가전 제품들의 인터넷 접속까지 논의되고 있는 단계에 이르고 있다. 이러한 기기들의 특징은 마이크로 프로세서를 내장하여 여러 개의 실시간 응용 프로그램(Real-Time Application)을 수행한다는 것이다.
과거의 실시간 응용 프로그램의 개발은 운영 체계(Operating System : OS)의 지원없이 주로 어셈블리 언어(Assembly Language)를 사용하여 장치 제어에서부터, 사용자 인터페이스(User Interface)에 이르기까지 전체를 개발하고, 타겟 시스템(Target System) 상에 적재된 롬(ROM : Read - Only Memory) 모니터와 호스트 - 타겟 간 시리얼(Serial) / 이더넷(Ethernet)을 통하여 디버깅하였다.
그러나, 인터넷 접속 기능 등 응용에서 요구되는 기능이 더욱 복잡하고, 다양해지면서, 실시간 운영 체계의 지원이 없이는 개발이 불가능하게 되었다. 또한, 고급 언어(High - Level Language)를 사용하여 응용 프로그램을 작성하는 것이 일반적으로 되었는데, 내장형 시스템(Embedded System)은 메모리나 디스크 등 자원이 한정되어 있어서, 호스트 컴퓨터에서 주로 개발을 하여, 타겟 시스템의 실행 코드를 생성해내는 교차 개발(Cross Development) 방법이 많이 사용되고 있다. 고급 언어를 사용한 실시간 응용 프로그램의 교차 개발을 위해서는 호스트 컴퓨터 상에서 실행되는 다양한 개발 도구의 지원이 필수적이다. 여기에는 디버거와 대화형 쉘(Interactive Shell), 자원 모니터(Resource Monitor)등이 포함된다.
디버거는 도구 중 가장 중요한 것이라고 할 수 있는데, 타겟 시스템에서 수행되는 프로그램을 호스트 컴퓨터에서 소스 레벨 디버깅하는 원격 디버깅(Remote Debugging)을 실현하기 위해서는 타겟 시스템 내에 이를 지원해 주는 태스크가 존재하여야 하며, 이를 디버그 에이전트(Debug Agent)라고 정의한다.
호스트 시스템에서 수행되는 심볼릭 디버거(Symbolic Debugger)와 타겟 시스템 상의 디버그 에이전트 간에는 원격 디버깅을 위한 프로토콜이 존재하여 디버깅 명령 및 각종 디버깅 정보를 주고 받는데 사용된다.
도 1은 종래 기술에 따른 원격 교차 디버깅 환경을 도시한 개략도로서, 이를 상세히 설명하면 다음과 같다.
종래의 기술에서는 호스트 OS(102) 상에 원격 디버거(101)가 존재하고, 타겟 시스템의 ROM 또는 플래시 메모리 등에 저장된 모니터 프로그램(103)이 적재되어 있으며, 이들은 시리얼 또는 이더넷(105)을 통하여 호스트의 원격 디버깅 서비스를 처리한다. 종래의 기술은 주로 실시간 운영 체계의 도움없이 타겟의 실시간 내장형 소프트웨어(104)를 개발하는데 필요한 기법이다. 따라서, 이들간의 프로토콜도 주로 디버깅을 위한 단순한 메시지이며, 디버그 에이전트 자체도 타겟 보드의 ROM 또는 모니터(103)에 적재되므로, 타겟 보드에 의존적이 된다. 또한, 단순한 기능만을 구현하므로 내부 코드는 어셈블리 언어로 작성되는 경우가 많아 새로운 보드를 작성하는 경우에는 타겟 보드상에 새로이 이식해야 하는 문제점이 있다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위하여 안출된 것으로서, 교차 디버깅 환경에서 타겟 시스템에 적재된 실시간 운영 체제에 종속적이지 않게 호스트의 원격 디버깅 서비스를 처리하며, 호스트에서 요청하는 서비스의 종류에 따라 해당 서비스를 수행하는 디버그 에이전트 장치 및 그 운용 방법을 제공하는데 그 목적이 있다.
도 1은 종래 기술에 따른 원격 교차 디버깅 환경을 도시한 개략도이고,
도 2는 본 발명의 일 실시예에 따른 디버그 에이전트를 사용한 내장형 실시간 소프트웨어의 원격 디버깅 환경을 도시한 개략도이고,
도 3은 도 2에 도시된 디버그 에이전트의 내부 모듈 구성도이고,
도 4는 본 발명에 따른 호스트 시스템의 도구들이 원격 프로시져 호출을 통하여 보낸 요청 서비스를 타겟 시스템측의 디버그 에이전트가 처리하는 과정을 나타낸 흐름도이고,
도 5는 도 3에 도시된 메인 장치로부터 각 서비스 처리 장치로 보내진 요청들을 상기 디버그 에이전트의 각 장치들이 처리하는 과정을 나타낸 흐름도이고,
도 6는 도 3에 도시된 디버그 에이전트가 타겟 보드상의 실시간 운영 체제의 커널 태스크로서, 초기화되는 과정을 나타낸 흐름도이고,
도 7은 도 2에 도시된 호스트 시스템과 타겟 시스템의 디버그 에이전트 간의 디버깅을 위한 프로토콜을 나타낸 테이블 구조의 예시도이다.
앞서 설명한 바와 같은 목적을 달성하기 위한 본 발명은, 타겟 시스템(Target System)에서 수행되는 프로그램을 호스트 시스템(Host System)에서 소스 레벨 디버깅(Source Level Debugging)하는 원격 디버깅(Remote Debugging)을 실현하기 위한 디버그 에이전트(Debug Agent) 장치에 있어서, 상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떤 형태의 서비스 요청인가를 판단하는 메인 모듈과; 상기 메인 모듈에서 요청받은 서비스 종류에 따라 해당 서비스를 수행하는 서비스 수행 모듈과; 상기 서비스 수행 모듈에 의하여 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 통신 모듈을 포함하여 이루어진 것을 특징으로 하는 디버그 에이전트 장치가 제공된다.
보다 더 상세하게는, 상기 서비스 수행 모듈은, 상기 메인 모듈에서 판단된 요청이 정지점 설정 및 해제에 관한 것일 때, 그 요청을 처리하며, 상기 호스트 시스템의 디버거에서 설정한 정지점을 처리하기 위하여 정지점들을 이중 연결 리스트로 관리하는 정지점 관리부와; 상기 메인 모듈에서 판단된 요청이 컨텍스트에 관한 요청이면, 해당 컨텍스트를 생성, 소멸, 재개 및 중지하는 등의 상기 타겟 시스템 상의 컨텍스트를 관리하는 컨텍스트 관리부와; 상기 메인 모듈에서 판단된 요청이 레지스터의 값을 읽고 쓰는 것에 관한 것이면, 상기 타겟 시스템의 레지스터 값을 얻어내고 새로운 값을 설정하는 원격 프로시져 함수 호출 서비스를 제공하는 레지스터 관리부와; 상기 메인 모듈에서 판단된 요청이 메모리 처리에 관한 것이면, 메모리 값에 대한 체크섬(Checksum) 계산, 메모리 읽기/쓰기, 메모리 채우기, 메모리 보호 및 메모리 이동 등의 기능을 수행하는 메모리 관리부와; 상기 메인 모듈에서 판단된 요청이 상기 타겟 시스템의 실시간 운영 체제 내의 함수 호출이면, 상기 호스트 시스템의 도구에서 요청한 함수를 수행하는 태스크를 생성하고 실행시키는 기능을 수행하는 함수 호출 관리부와; 상기 메인 모듈에서 판단된 요청이 디버그 에이전트 내 컨텍스트 내에 있는 함수 호출이면, 상기 타겟 시스템 상의 함수를 호출하지만 태스크를 생성하지 아니하고, 디버그 에이전트의 컨텍스트 내에서 수행하는 직접 호출 관리부와; 상기 메인 모듈에서 판단된 요청이 이벤트(Event) 설정 및 해제이면, 이벤트 포인트(Point)를 추가하고 삭제하는 기능을 수행하는 이벤트 관리부와; 상기 메인 모듈에서 판단된 요청이 가상 입출력에 관한 것이면, 상기 타겟 시스템의 가상 입출력 채널에 데이터를 기록하는 서비스를 제공하여 상기 타겟 시스템으로부터의 출력값을 상기 호스트 시스템의 도구에서 제공하는 가상 터미널로 전송하는 기능을 수행하는 가상 입출력 관리부와; 상기 메인 모듈에서 판단된 요청을 처리시 실시간 운영 체제 내에서 예외 상황이 발생하면, 예외 상황을 상기 호스트 시스템에게 알리는 기능을 수행하는 예외 상황 통보부와; 상기 메인 모듈에서 판단된 요청을 처리시 실시간 운영 체제 내에서 태스크의 종료를 알리는 이벤트가 발생하면, 컨텍스트의 종료를 상기 호스트 시스템에게 알리는 기능을 수행하는 종료 통보부를 포함하여 이루어진 것을 특징으로 하는 디버그 에이전트 장치가 제공된다.
또한, 타겟 시스템(Target System)에서 수행되는 프로그램을 호스트 시스템(Host System)에서 소스 레벨 디버깅(Source Level Debugging)하는 원격 디버깅(Remote Debugging)을 실현하기 위한 디버그 에이전트(Debug Agent) 운용 방법에 있어서, 상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떤 형태의 서비스 요청인가를 판단하는 제 1 단계와; 상기 제 1 단계에서 판단된 서비스 종류에 따라 해당 서비스를 수행하는 제 2 단계와; 상기 제 2 단계에서 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 제 3 단계를 포함하여 이루어진 것을 특징으로 하는 디버그 에이전트 운용 방법이 제공된다.
또한, 컴퓨터에, 상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떤 형태의 서비스 요청인가를 판단하는 제 1 단계와; 상기 제 1 단계에서 요청받은 서비스 종류에 따라 해당 서비스를 수행하는 제 2 단계와; 상기 제 2 단계에서 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 제 3 단계를 포함하여 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체가 제공된다.
아래에서, 본 발명에 따른 양호한 일 실시예를 첨부한 도면을 참조로 하여 상세히 설명하겠다.
도 2는 본 발명의 일 실시예에 따른 디버그 에이전트를 사용한 내장형 실시간 소프트웨어의 원격 디버깅 환경을 도시한 개략도로서, 이를 상세히 설명하면 다음과 같다.
디버그 에이전트(204)에서 수행하는 일들은 정지점의 설정 / 해제, 타겟 시스템의 메모리, 레지스터의 내용 조회 및 변경, 목적 프로그램의 실행을 제어하는 원격 디버깅 기능과 타겟에 적재된 오브젝트 코드 내의 함수 호출, 호스트 시스템으로의 이벤트 통지(예외 상황, 태스크의 종료) 기능과 가상 I/O 기능을 포함한다.
호스트 시스템에 있는 원격 디버거(201)는 범용 운영 체계 상에서 동작하고, 어플리케이션 수준의 원격 프로시져 호출(RPC : Remote Procedure Call)을 할 수 있으므로, 상기 디버거(201)와 같은 호스트 시스템 도구들은 원격 프로시져 호출을 할 때, 요청을 원하는 프로토콜의 이름과 원하는 함수 호출, 그리고 함수 호출에 필요한 입출력 데이터를 인자로 하여 호출하는 구조를 가지도록 한다. 상기 디버거(201)와 같은 도구들은 호스트 시스템에서 제공되는 원격 프로시져 호출 인터페이스를 통하여 상기 디버그 에이전트(204)에게 전달하여 원하는 기능을 수행하도록 하고, 그 결과를 타겟으로부터 넘겨받는다.
상기 디버거(201)와 상기 디버그 에이전트(204)간의 인터페이스를 위하여 프로토콜이 정의될 수 있으며, 상기 디버거(201)와 상기 디버그 에이전트(204)는 디버그 프로토콜을 사용하여 통신하며, 이것은 원격 프로시져 호출을 이용한 어플리케이션 레벨 프로토콜인데, 타겟 시스템과 호스트 시스템의 운영 체제에 대하여 독립성을 가지도록 설계하였고, 타겟 시스템의 자원 사용을 최소화할 수 있도록 하였다.
도 3은 도 2에 도시된 디버그 에이전트의 내부 모듈 구성도로서, 상기 디버그 에이전트는 메인 장치(301, Main Module), 컨텍스트 관리 장치(302, Context Manager), 함수 호출 관리 장치(303, Function Call Manager), 직접 호출 관리 장치(304, Direct Call Manager), 이벤트 관리 장치(305, Events Manager), 가상 입출력 관리 장치(306, Virtual I/O Manager), 정지점 관리 장치(307, Breakpoint Manager), 예외 상황 통보 장치(308, Exception Notifier), 종료 통보 장치(309, Exit Notifier), 메모리 관리 장치(310, Memory Manager), 레지스터 관리 장치(311, Register Manager) 및 백 엔드 관리 장치(312)로 구성되어 있다.
이를 상세히 설명하면 다음과 같다.
먼저 상기 메인 장치(301)는 호스트 시스템으로부터의 서비스 요청을 수락하여, 요청의 종류를 판단하고, 해당 장치를 관리한다.
또한, 상기 정지점 관리 장치(307)는 상기 판단된 요청이 정지점 설정 및 해제에 관한 것일 때, 그 요청을 처리하며, 호스트 시스템의 디버거(201)에서 설정한 정지점을 처리하기 위하여 정지점들을 이중 연결 리스트(Doubly Linked List)로 관리한다.
또한, 상기 컨텍스트 관리 장치(302)는 상기 판단된 요청이 컨텍스트에 관한 요청일 때, 그 요청을 처리하며, 새로운 컨텍스트를 생성, 소멸, 재개 및 중지하는 등의 타겟 시스템 상의 컨텍스트를 관리하는 서비스를 제공한다.
또한, 상기 레지스터 관리 장치(311)는 상기 판단된 요청이 레지스터의 값을 읽고 쓰는 것에 관한 것일 때, 그 요청을 처리하며, 타겟 시스템의 레지스터 값을 얻어내고 새로운 값을 설정하는 원격 프로시져 함수 호출 서비스를 제공한다.
또한, 상기 메모리 관리 장치(310)는 상기 판단된 요청이 메모리 처리일 때, 그 요청을 처리하며, 메모리 값에 대한 체크섬(Checksum) 계산, 메모리 읽기/쓰기, 메모리 채우기, 메모리 보호 및 메모리 이동 등의 기능을 수행한다.
또한, 상기 함수 호출 관리 장치(303)는 상기 판단된 요청이 타겟 시스템의 실시간 운영 체제 내의 함수 호출일 때, 그 요청을 처리하며, 호스트 시스템의 도구에서 요청한 함수를 수행하는 태스크를 생성하고 실행시키는 기능을 수행한다.
또한, 상기 직접 호출 관리 장치(304)는 상기 판단된 요청이 상기 디버그 에이전트 내 컨텍스트 내에 있는 함수 호출일 경우, 그 요청을 처리하며, 타겟 시스템 상의 함수를 호출하지만 태스크를 생성하지 아니하고, 상기 디버그 에이전트의 컨텍스트 내에서 수행한다.
또한, 상기 이벤트 관리 장치(305)는 상기 판단된 요청이 이벤트 설정 및 해제일 경우, 그 요청을 처리하며, 이벤트 포인트를 추가하고 삭제하는 기능을 수행한다.
또한, 상기 가상 I/O 관리 장치(306)는 상기 판단된 요청이 가상 입출력에 관한 것일 때, 그 요청을 처리하며, 타겟 시스템의 가상 I/O 채널에 데이터를 기록하는 서비스를 제공하며, 이는 타겟 시스템으로부터의 출력값을 호스트 시스템 도구에서 제공하는 가상 터미널로 전송하는 기능을 수행한다.
또한, 상기 예외 상황 통보 장치(308)는 상기 판단된 요청을 처리시 실시간 운영 체제 내에서 예외 상황이 발생하면, 이를 처리하며, 예외 상황을 호스트 시스템으로 알리는 기능을 수행한다.
또한, 상기 종료 통보 장치(309)는 상기 판단된 요청을 처리시 실시간 운영 체제 내에서 태스크의 종료를 알리는 이벤트가 발생할 경우, 이를 처리하며, 컨텍스트의 종료를 호스트 시스템에 알리는 기능을 수행한다.
또한, 상기 백 엔드 장치(312)는 상기 호스트 시스템에서 원격 프로시져 함수 호출이 가능하도록 패킷 드라이버와 해석기(Interpreter)로 구성되어 있으며, 물리적인 네트웍을 통하여 패킷을 주고 받는다. 타겟 시스템은 가용 자원이 제한적이므로, 본 실시예에서는 경량 패킷 해석기를 이용하여 타겟 시스템의 메모리 요구를 최소화하도록 설계하였다.
도 4는 본 발명에 따른 호스트 시스템의 도구들이 원격 프로시져 호출을 통하여 보낸 요청 서비스를 상기 타겟 시스템측의 디버그 에이전트(204)가 처리하는 과정을 나타낸 흐름도이다.
먼저, 스텝 S401에서, 초기화된 메인 장치(301)는 호스트 시스템으로부터의 서비스 요청을 대기한 후, 스텝 S402에서, 호스트 시스템으로부터의 서비스 요청이 있는지 여부를 판단한다.
상기 스텝 S402에서의 판단 결과, 서비스 요청이 있으면, 스텝 S403에서, 호스트 시스템으로부터의 요청을 인지한 후, 스텝 S404에서, 서비스 요청의 종류를 판단하여, 스텝 S405에서, 상기 판단된 서비스 요청의 종류에 따라 해당 메시지를 출력하고, 스텝 S406에서, 타겟 시스템에 예외 상황이 발생하였는지 여부를 판단한다.
상기 스텝 S406에서의 판단 결과, 예외 상황이 발생하면, 스텝 S407에서, 상기 예외 상황 통보 장치(308)에게 호스트 시스템으로 알릴 것을 지시한 한 후, 상기 스텝 S401로 복귀한다.
상기 스텝 S406에서의 판단 결과, 예외 상황이 발생하지 아니하면, 스텝 S408에서, 작업이 완료되었는지 여부를 판단한다.
상기 스텝 S408에서의 판단 결과, 작업이 완료되지 아니하면, 상기 스텝 S401로 복귀하고, 작업이 완료되면, 스텝 S409에서, 상기 종료 통보 장치(409)에게 호스트 시스템으로 알릴 것을 지시한 후, 상기 스텝 S401로 복귀한다.
도 5는 도 3에 도시된 상기 메인 장치(301)로부터 각 서비스 처리 장치로 보내진 요청들을 상기 디버그 에이전트의 각 장치들이 처리하는 과정을 나타낸 흐름도로서, 이를 상세히 설명하면 다음과 같다.
먼저, 스텝 S501에서, 상기 메인 장치(301)로부터 요청 메시지를 접수한 후, 스텝 S502에서 필요한 내부 처리를 수행하고, 스텝 S503에서, 상기 내부 처리 수행 중 타겟 시스템 상에 적재된 실시간 운영 체재 내의 커널(Kernel) 함수 호출이 존재하는지 여부를 판단한다.
상기 스텝 S503에서의 판단 결과, 커널 함수 호출이 존재하면, 스텝 S504에서, 해당 커널 함수 호출을 한 후, 스텝 S505에서, 요청 서비스를 처리하기 위한 나머지 작업을 처리하고, 스텝 S506에서, 예외 상황이 존재하는지 여부를 파악한다.
상기 스텝 S506에서의 판단 결과, 예외 상황이 존재하면, 스텝 S507에서, 예외 상황을 상기 예외 상황 통보 장치(308)에게 알린 후, 대기 상태로 복귀한다.
상기 스텝 S506에서의 판단 결과, 예외 상황이 존재하지 아니하면, 스텝 S508에서, 태스크가 종료 상태인지 여부를 판단한다.
상기 스텝 S508에서의 판단 결과, 종료 상태이면, 스텝 S509에서, 태스크의 종료 상태를 상기 태스크 종료 통보 장치(309)에게 알린 후, 대기 상태로 복귀하고, 종료 상태가 아니면, 스텝 S510에서, 작업 수행의 결과값을 상기 메인 장치(301)에게 반환한 후, 종료한다.
또한, 상기 스텝 S503에서의 판단 결과, 커널 함수 호출이 존재하지 아니하면, 상기 스텝 S506으로 진행한다.
도 6는 도 3에 도시된 상기 디버그 에이전트(204)가 타겟 시스템 보드 상의 실시간 운영 체제의 커널 태스크로서, 초기화되는 과정을 나타낸 흐름도로서, 이를 상세히 설명하면 다음과 같다.
먼저, 스텝 S601에서, 커널과의 인터페이스를 위하여, 상기 디버그 에이전트(204) 내의 커널 함수 포인터를 초기화한 후, 스텝 S602에서, 서비스 초기화를 하고, 스텝 S603에서, 호스트 시스템의 원격 디버거(201)가 상기 타겟 시스템측의 디버그 에이전트(204)로 접속할 수 있도록 접속 라이브러리(Library)를 초기화한다.
이어서, 스텝 S604에서, 메모리 참조를 위한 메모리 라이브러리를 초기화한 후, 스텝 S605에서, 상기 디버그 에이전트(204) 내의 초기화 과정이 끝나면, 정의된 장치를 사용할 수 있도록 해당 장치들을 초기화하고, 스텝 S606에서, 디버그 에이전트를 초기화한다.
이어서, 스텝 S607에서, 상기 디버그 에이전트(204)를 하부 실시간 운영 체제의 하나의 커널 태스크로서 활성화한 후, 스텝 S608에서, 서비스의 시작 부분이 있는 상기 메인 장치(301)로 제어권을 넘겨주고, 종료한다.
도 7은 도 2에 도시된 호스트 시스템과 타겟 시스템의 디버그 에이전트(204) 간의 디버깅을 위한 프로토콜을 나타낸 테이블 구조의 예시도로서, 이를 상세히 설명하면 다음과 같다.
본 실시예에서는 호스트 시스템과 타겟 시스템 간의 프로토콜은 크게 컨텍스트 처리, 이벤트 처리, 메모리 처리, 레지스터 처리, 가상 입출력, 커널 함수 호출, 디버그 에이전트의 컨텍스트내 직접 호출에 관한 7가지 분류, 총 25개로 구성되는데, 각각은 호스트에서 함수 호출시 인자로 넘겨줄 수 있도록, 0에서 24의 값으로 설계하였다.
상기 프로토콜은 도 3의 도시된 메인 장치(302)에서 프로토콜의 종류를 판단하는데 사용하며, 이들의 값을 보고 수행할 해당 장치를 인지하여 해당 장치로 전달한다.
상기와 같은 본 발명은 컴퓨터로 읽을 수 있는 기록 매체로 기록되고, 컴퓨터에 의해 처리되게 된다.
앞서 상세히 설명한 바와 같이 본 발명은 종래의 교차 디버깅 환경에서 ROM 모니터와 비교하여 볼 때, 종래에는 주로 호스트 시스템의 원격 디버거를 위한 서비스만이 제공되는 것을 본 발명에 의하면, 호스트 시스템의 대화형 쉘, 원격 디버거, 자원 모니터 등의 서비스를 한꺼번에 제공함으로써, 내장형 실시간 소프트웨어의 개발을 용이하게 할 수 있으며, 호스트 시스템과의 통신 프로토콜을 최소로 하여 타겟 시스템의 부하(Overhead)를 최소로 할 뿐만 아니라, 타겟 시스템에 상주하는 실시간 운영 체제에 독립적인 인터페이스를 이용함으로써, 타겟 시스템의 운영 체제에 독립적이므로, 실시간 운영 체제에 쉽게 이식(Porting)이 가능하다는 효과가 있다.
이상에서 본 발명에 대한 기술 사상을 첨부 도면과 함께 서술하였지만 이는 본 발명의 가장 양호한 일 실시예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 이 기술 분야의 통상의 지식을 가진 자이면 누구나 본 발명의 기술 사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방이 가능함은 명백한 사실이다.

Claims (7)

  1. 타겟 시스템(Target System)에서 수행되는 프로그램을 호스트 시스템(Host System)에서 소스 레벨 디버깅(Source Level Debugging)하는 원격 디버깅(Remote Debugging)을 실현하기 위한 디버그 에이전트(Debug Agent) 장치에 있어서,
    상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떠한 형태의 서비스 요청인가를 판단하는 메인 모듈과;
    상기 메인 모듈에서 요청받은 서비스 종류에 따라 해당 서비스를 수행하는 서비스 수행 모듈과;
    상기 서비스 수행 모듈에 의하여 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 통신 모듈을 포함하여 이루어진 것을 특징으로 하는 디버그 에이전트 장치.
  2. 제 1 항에 있어서,
    상기 서비스 수행 모듈은,
    상기 메인 모듈에서 판단된 요청이 정지점 설정 및 해제에 관한 것일 때, 그 요청을 처리하며, 상기 호스트 시스템의 디버거에서 설정한 정지점을 처리하기 위하여 정지점들을 이중 연결 리스트(Doubly Linked List)로 관리하는 정지점 관리부와;
    상기 메인 모듈에서 판단된 요청이 컨텍스트(Context)에 관한 요청이면, 해당 컨텍스트를 생성, 소멸, 재개 및 중지하는 등의 상기 타겟 시스템 상의 컨텍스트를 관리하는 컨텍스트 관리부와;
    상기 메인 모듈에서 판단된 요청이 레지스터(Register)의 값을 읽고 쓰는 것에 관한 것이면, 상기 타겟 시스템의 레지스터 값을 얻어내고 새로운 값을 설정하는 원격 프로시져 함수 호출 서비스를 제공하는 레지스터 관리부와;
    상기 메인 모듈에서 판단된 요청이 메모리 처리에 관한 것이면, 메모리 값에 대한 체크섬(Checksum) 계산, 메모리 읽기/쓰기, 메모리 채우기, 메모리 보호 및 메모리 이동 등의 기능을 수행하는 메모리 관리부와;
    상기 메인 모듈에서 판단된 요청이 상기 타겟 시스템의 실시간 운영 체제 내의 함수 호출이면, 상기 호스트 시스템의 도구에서 요청한 함수를 수행하는 태스크를 생성하고 실행시키는 기능을 수행하는 함수 호출 관리부와;
    상기 메인 모듈에서 판단된 요청이 디버그 에이전트 내 컨텍스트 내에 있는 함수 호출이면, 상기 타겟 시스템 상의 함수를 호출하지만 태스크를 생성하지 아니하고, 디버그 에이전트의 컨텍스트 내에서 수행하는 직접 호출 관리부와;
    상기 메인 모듈에서 판단된 요청이 이벤트(Event) 설정 및 해제이면, 이벤트 포인트(Point)를 추가하고 삭제하는 기능을 수행하는 이벤트 관리부와;
    상기 메인 모듈에서 판단된 요청이 가상 입출력(Virtual Input/Output)에 관한 것이면, 상기 타겟 시스템의 가상 입출력 채널에 데이터를 기록하는 서비스를 제공하여 상기 타겟 시스템으로부터의 출력값을 상기 호스트 시스템의 도구에서 제공하는 가상 터미널로 전송하는 기능을 수행하는 가상 입출력 관리부와;
    상기 메인 모듈에서 판단된 요청을 처리시 실시간 운영 체제 내에서 예외 상황이 발생하면, 예외 상황을 상기 호스트 시스템에게 알리는 기능을 수행하는 예외 상황 통보부와;
    상기 메인 모듈에서 판단된 요청을 처리시 실시간 운영 체제 내에서 태스크의 종료를 알리는 이벤트가 발생하면, 컨텍스트의 종료를 상기 호스트 시스템에게 알리는 기능을 수행하는 종료 통보부를 포함하여 이루어진 것을 특징으로 하는 디버그 에이전트 장치.
  3. 타겟 시스템(Target System)에서 수행되는 프로그램을 호스트 시스템(Host System)에서 소스 레벨 디버깅(Source Level Debugging)하는 원격 디버깅(Remote Debugging)을 실현하기 위한 상기 타겟 시스템측의 디버그 에이전트(Debug Agent) 운용 방법에 있어서,
    상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떠한 형태의 서비스 요청인가를 판단하는 제 1 단계와;
    상기 제 1 단계에서 판단된 서비스 종류에 따라 해당 서비스를 수행하는 제 2 단계와;
    상기 제 2 단계에서 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 제 3 단계를 포함하여 이루어진 것을 특징으로 하는 디버그 에이전트 운용 방법.
  4. 제 3 항에 있어서,
    상기 디버그 에이전트로부터 해당 커널 함수 호출이 있으면, 상기 디버그 에이전트 내의 커널 함수 포인터를 초기화하고, 상기 호스트 시스템의 원격 디버거가 상기 디버그 에이전트로 접속할 수 있도록 접속 라이브러리를 초기화하며, 상기 디버그 에이전트를 하부 실시간 운영 체제의 하나의 커널 태스크로서 활성화시킨 후, 상기 제 1 단계를 수행하는 것을 특징으로 하는 디버그 에이전트 운용 방법.
  5. 제 3 항에 있어서,
    상기 제 2 단계는,
    상기 제 1 단계에서 판단된 요청이 정지점 설정 및 해제에 관한 것이면, 상기 호스트 시스템의 디버거에서 설정한 정지점을 처리하기 위하여 정지점들을 이중 연결 리스트로 관리하는 제 1 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 컨텍스트에 관한 요청이면, 해당 컨텍스트를 생성, 소멸, 재개 및 중지하는 등의 상기 타겟 시스템상의 컨텍스트를 관리하는 제 2 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 레지스터의 값을 읽고 쓰는 것에 관한 것이면, 상기 타겟 시스템의 레지스터 값을 얻어내고 새로운 값을 설정하는 원격 프로시져 함수 호출 서비스를 제공하는 제 3 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 메모리 처리에 관한 것이면, 메모리 값에 대한 체크섬(Checksum) 계산, 메모리 읽기/쓰기, 메모리 채우기, 메모리 보호 및 메모리 이동 등의 기능을 수행하는 제 4 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 상기 타겟 시스템의 실시간 운영 체제 내의 함수 호출이면, 상기 호스트 시스템의 도구에서 요청한 함수를 수행하는 태스크를 생성하고 실행시키는 기능을 수행하는 제 5 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 디버그 에이전트 내 컨텍스트 내에 있는 함수 호출이면, 상기 타겟 시스템 상의 함수를 호출하지만 태스크를 생성하지 아니하고, 디버그 에이전트의 컨텍스트 내에서 수행하는 제 6 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 이벤트(Event) 설정 및 해제이면, 이벤트 포인트(Point)를 추가하고 삭제하는 기능을 수행하는 제 7 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 가상 입출력에 관한 것이면, 상기 타겟 시스템의 가상 입출력 채널에 데이터를 기록하는 서비스를 제공하여 상기 타겟 시스템으로부터의 출력값을 상기 호스트 시스템의 도구에서 제공하는 가상 터미널로 전송하는 기능을 수행하는 제 8 서브 단계와;
    상기 제 1 단계에서 판단된 요청을 처리시 실시간 운영 체제 내에서 예외 상황이 발생하면, 예외 상황을 상기 호스트 시스템에게 알리는 기능을 수행하는 제 9 서브 단계와;
    상기 제 1 단계에서 판단된 요청을 처리시 실시간 운영 체제 내에서 태스크의 종료를 알리는 이벤트가 발생하면, 컨텍스트의 종료를 상기 호스트 시스템에게 알리는 기능을 수행하는 제 10 서브 단계를 포함하여 이루어진 것을 특징으로 하는 디버그 에이전트 운용 방법.
  6. 컴퓨터에,
    상기 호스트 시스템에 있는 교차 개발 도구들의 서비스 요청을 전달받아, 상기 서비스가 어떠한 형태의 서비스 요청인가를 판단하는 제 1 단계와;
    상기 제 1 단계에서 요청받은 서비스 종류에 따라 해당 서비스를 수행하는 제 2 단계와;
    상기 제 2 단계에서 수행된 서비스 결과를 상기 호스트 시스템으로 전송하는 제 3 단계를 포함하여 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  7. 제 7 항에 있어서,
    상기 제 2 단계는,
    상기 제 1 단계에서 판단된 요청이 정지점 설정 및 해제에 관한 것이면, 상기 호스트 시스템의 디버거에서 설정한 정지점을 처리하기 위하여 정지점들을 이중 연결 리스트로 관리하는 제 1 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 컨텍스트에 관한 요청이면, 해당 컨텍스트를 생성, 소멸, 재개 및 중지하는 등의 상기 타겟 시스템상의 컨텍스트를 관리하는 제 2 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 레지스터의 값을 읽고 쓰는 것에 관한 것이면, 상기 타겟 시스템의 레지스터 값을 얻어내고 새로운 값을 설정하는 원격 프로시져 함수 호출 서비스를 제공하는 제 3 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 메모리 처리에 관한 것이면, 메모리 값에 대한 체크섬(Checksum) 계산, 메모리 읽기/쓰기, 메모리 채우기, 메모리 보호 및 메모리 이동 등의 기능을 수행하는 제 4 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 상기 타겟 시스템의 실시간 운영 체제 내의 함수 호출이면, 상기 호스트 시스템의 도구에서 요청한 함수를 수행하는 태스크를 생성하고 실행시키는 기능을 수행하는 제 5 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 디버그 에이전트 내 컨텍스트 내에 있는 함수 호출이면, 상기 타겟 시스템 상의 함수를 호출하지만 태스크를 생성하지 아니하고, 디버그 에이전트의 컨텍스트 내에서 수행하는 제 6 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 이벤트(Event) 설정 및 해제이면, 이벤트 포인트(Point)를 추가하고 삭제하는 기능을 수행하는 제 7 서브 단계와;
    상기 제 1 단계에서 판단된 요청이 가상 입출력에 관한 것이면, 상기 타겟 시스템의 가상 입출력 채널에 데이터를 기록하는 서비스를 제공하여 상기 타겟 시스템으로부터의 출력값을 상기 호스트 시스템의 도구에서 제공하는 가상 터미널로 전송하는 기능을 수행하는 제 8 서브 단계와;
    상기 제 1 단계에서 판단된 요청을 처리시 실시간 운영 체제 내에서 예외 상황이 발생하면, 예외 상황을 상기 호스트 시스템에게 알리는 기능을 수행하는 제 9 서브 단계와;
    상기 제 1 단계에서 판단된 요청을 처리시 실시간 운영 체제 내에서 태스크의 종료를 알리는 이벤트가 발생하면, 컨텍스트의 종료를 상기 호스트 시스템에게 알리는 기능을 수행하는 제 10 서브 단계를 포함하여 이루어진 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1019990046089A 1999-10-22 1999-10-22 내장형 실시간 소프트웨어의 디버그 에이전트 장치 및 그 운용 방법 KR100334904B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990046089A KR100334904B1 (ko) 1999-10-22 1999-10-22 내장형 실시간 소프트웨어의 디버그 에이전트 장치 및 그 운용 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990046089A KR100334904B1 (ko) 1999-10-22 1999-10-22 내장형 실시간 소프트웨어의 디버그 에이전트 장치 및 그 운용 방법

Publications (2)

Publication Number Publication Date
KR20010038205A true KR20010038205A (ko) 2001-05-15
KR100334904B1 KR100334904B1 (ko) 2002-05-04

Family

ID=19616544

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990046089A KR100334904B1 (ko) 1999-10-22 1999-10-22 내장형 실시간 소프트웨어의 디버그 에이전트 장치 및 그 운용 방법

Country Status (1)

Country Link
KR (1) KR100334904B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010086844A (ko) * 2000-03-03 2001-09-15 심재범 인터넷 서비스 자동화 시스템
KR20040037300A (ko) * 2002-10-28 2004-05-07 삼성전자주식회사 다중 프로세서를 갖는 장치의 디버깅 방법
CN117407234A (zh) * 2023-12-14 2024-01-16 西安智多晶微电子有限公司 一种基于vio的fpga实时调试系统和方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101008977B1 (ko) 2004-02-25 2011-01-17 삼성전자주식회사 OSGi 서비스 플랫폼 테스트 방법 및 이를 이용한테스트 툴

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010086844A (ko) * 2000-03-03 2001-09-15 심재범 인터넷 서비스 자동화 시스템
KR20040037300A (ko) * 2002-10-28 2004-05-07 삼성전자주식회사 다중 프로세서를 갖는 장치의 디버깅 방법
CN117407234A (zh) * 2023-12-14 2024-01-16 西安智多晶微电子有限公司 一种基于vio的fpga实时调试系统和方法
CN117407234B (zh) * 2023-12-14 2024-03-19 西安智多晶微电子有限公司 一种基于vio的fpga实时调试系统和方法

Also Published As

Publication number Publication date
KR100334904B1 (ko) 2002-05-04

Similar Documents

Publication Publication Date Title
US5630049A (en) Method and apparatus for testing software on a computer network
US6011920A (en) Method and apparatus for debugging applications on a personality neutral debugger
JP3339482B2 (ja) 分散デバッグ装置及びデバッグ方法並びに制御プログラムを記録した記録媒体
US5675800A (en) Method and apparatus for remotely booting a computer system
US6826746B2 (en) Debugger probe for object oriented programming
US5819093A (en) System and method for a distributed debugger for debugging distributed application programs
US9632913B2 (en) Remote debug service in a cloud environment
US20050216895A1 (en) Method and apparatus for remote debugging of kernel and application software
US7155550B2 (en) Program-executing apparatus and portable information processing apparatus
US20130152077A1 (en) Personal and pooled virtual machine update
US8677321B2 (en) User-space probe based debugging
US20080133214A1 (en) Method and system for child-parent mechanism emulation via a general interface
JPH08502841A (ja) 分散適用業務処理ネットワーク
CN111209193A (zh) 程序的调试方法及装置
KR100265679B1 (ko) 리얼 타임 제어 시스템
EP3213198B1 (en) Monitoring a mobile device application
KR100334904B1 (ko) 내장형 실시간 소프트웨어의 디버그 에이전트 장치 및 그 운용 방법
WO2012079401A1 (zh) 一种虚拟串口系统及其通信方法
CN109173238B (zh) 一种双输入事件同时执行的方法及计算机存储介质
CN113986466A (zh) 一种面向云计算的gpu虚拟化系统和方法
JP2003150405A (ja) 機器組込みプログラムのデバッグ方法
KR20140140790A (ko) Rtos 기반 임베디드 시스템 소프트웨어 모니터링을 위한 타겟 에이젼트 운용 방법
KR20130084397A (ko) 실시간 운영체제 기반 임베디드 시스템 소프트웨어 디버깅을 위한 타겟 에이젼트 운용 방법
KR101418390B1 (ko) 원격 응용 프로그래밍 디버깅시스템 및 그 제어방법
US10165074B2 (en) Asynchronous custom exit points

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120330

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20130325

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee