KR100303188B1 - Method and apparatus for measuring code coverage of embedded software on a traget hardware platform - Google Patents

Method and apparatus for measuring code coverage of embedded software on a traget hardware platform Download PDF

Info

Publication number
KR100303188B1
KR100303188B1 KR1019970016363A KR19970016363A KR100303188B1 KR 100303188 B1 KR100303188 B1 KR 100303188B1 KR 1019970016363 A KR1019970016363 A KR 1019970016363A KR 19970016363 A KR19970016363 A KR 19970016363A KR 100303188 B1 KR100303188 B1 KR 100303188B1
Authority
KR
South Korea
Prior art keywords
computer program
data processing
module
instrumented
execution
Prior art date
Application number
KR1019970016363A
Other languages
Korean (ko)
Other versions
KR970071253A (en
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 박종섭
Publication of KR970071253A publication Critical patent/KR970071253A/en
Application granted granted Critical
Publication of KR100303188B1 publication Critical patent/KR100303188B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Abstract

PURPOSE: A method and device for analyzing a computer program is provided to interpret a computer program including a plurality of modules. CONSTITUTION: A programmer selects a portion of a computer program as an instrument(300). The code selected by the programmer is instrumented(310). The programmer instruments one module in a computer program for creating one instrumented module. The other modules out of a plurality of modules are not instrumented. The programmer combines the codes which are not selected for the instrument with the instrumented code(320). A code not including the total program is collected, and an object code is manufactured, and the code is linked for forming an available computer program(330). An available computer program is returned by combining code portions(340).

Description

컴퓨터 프로그램 분석 방법 및 장치{METHOD AND APPARATUS FOR MEASURING CODE COVERAGE OF EMBEDDED SOFTWARE ON A TRAGET HARDWARE PLATFORM}METHOD AND APPARATUS FOR MEASURING CODE COVERAGE OF EMBEDDED SOFTWARE ON A TRAGET HARDWARE PLATFORM

본 발명은 소프트웨어 개발 분야에 관한 것으로, 특히 컴퓨터 프로그램의 실행을 해석하기 위한 방법 및 장치에 관한 것이다. 더욱이, 본 발명은 컴퓨터 프로그램의 선택된 부분을 테스트하는 브랜치 커버리지를 담당하도록 하는 데이터를 발생시키기 위한 방법 및 장치에 관한 것이다.TECHNICAL FIELD The present invention relates to the field of software development, and more particularly, to a method and apparatus for interpreting execution of a computer program. Moreover, the present invention relates to a method and apparatus for generating data that is responsible for branch coverage testing a selected portion of a computer program.

컴퓨터 프로그램이 커지고 복잡해짐에 따라, 소프트웨어 개발 프로그램의 중요성은 증가한다. 소프트웨어 개발 프로그램은 컴퓨터 프로그램을 효율적이고 신속하게 개발할 수 있도록 프로그래머의 능력을 향상시킨다.As computer programs become larger and more complex, the importance of software development programs increases. Software development programs enhance programmers' ability to develop computer programs efficiently and quickly.

컴퓨터 프로그램 개발중 중요하면서도 시간이 소비되는 단계가 테스트 단계이다. 컴퓨터 프로그램을 충분히 테스트하기 위해서는 프로그래머는 전체 프로그램을 구성하는 많은 모듈(module)이 각각 테스트(test)되도록 보장해야만 한다.An important and time consuming step in computer program development is the testing phase. In order to fully test a computer program, a programmer must ensure that each of the modules that make up the entire program are tested.

몇몇 모듈이 예외적인 환경하에서만 실행되므로 컴퓨터 프로그램의 각 모듈을 테스트하기는 어렵다. 예를 들어, 스프레드쉬프(spreadsheet) 프로그램은 정상 동작 조건하에서 연속적으로 실행되는 5개의 모듈을 갖고, 특정 조건들이 컴퓨터내에서 확실히 존재할때만 실행되는 5개의 다른 모듈을 가질 수 있다. 이 프로그램이 정상 동작 조건하에서 테스트되었다면, 5개의 모듈이 완전이 수행되겠지만, 5개의 다른 모듈들은 아마도 전혀 테스트되지 않을 것이다.It is difficult to test each module of a computer program because some modules run under exceptional circumstances. For example, a spreadsheet program may have five modules that run continuously under normal operating conditions, and five other modules that execute only when certain conditions exist within the computer. If the program was tested under normal operating conditions, five modules would run completely, but five other modules would probably not be tested at all.

이런 상황을 바로잡기 위해서, 프로그래머들은 정상적으로는 실행되지 않는 5개의 모듈을 실행시키는 예외적인 환경을 시험 및 재창조하기 위해 여러 벌의 테스트 프로그램을 만든다. 그러나, 이들 조건 창조는 어려울 수 있다. 예를 들어, 테스트중인 컴퓨터 프로그램이 내장형 마이크로콘트롤러(microcontroller_에서 실행될때 특정 조건을 시뮬레이트(simulate)하기는 어렵다. 내장형 마이크로콘트롤러들은 범용 마이크로프로세서(microprocessor)들의 몇몇의 특수 형태를 갖지 않은 처리 유니트(processing unit)들이다. 테스트 프로그램들이 효율적인지 알기 위해서, 프로그램은 모듈들이 실행중인 것을 나타내기 위해 테스트중인 컴퓨터 프로그램으로부터의 피드백(feedback)을 가질 필요가 있다.To correct this situation, programmers create multiple test programs to test and recreate an exceptional environment that runs five modules that normally do not run. However, creating these conditions can be difficult. For example, it is difficult for a computer program under test to simulate certain conditions when run in an embedded microcontroller— embedded microcontrollers are processing units that do not have some special form of general purpose microprocessors. In order to know if the test programs are efficient, the program needs to have feedback from the computer program under test to indicate that the modules are running.

상기의 상황은 개발중인 컴퓨터 프로그램이 소프트웨어 개발 프로그램들을 실행시키는 프로세서와 구조적으로 다른 프로세서에서 실행될 예정이면 더욱 어려워진다. 예를 들어, 인텔(Intel) 타입 프로세서에서 실행되도록 설계된 일련의 소프트웨어 개발 프로그램들이 자일로그(Zilog) 타입 프로세서와 호환될 컴퓨터 프로그램 개발을 포함할 수 있다. 이런 상황에서, 개발중인 컴퓨터 프로그램이 소프트웨어 개발 프로그램과 동일한 프로세서에서 실행될리가 없다. 이것은 소프트웨어개발 프로그램이 Zilog 프로세서에 의해 실행될 예정인 컴퓨터 프로그램의 성능 판단에서 거의 쓸모없다는 것을 나타낸다.The above situation becomes more difficult if the computer program being developed is intended to run on a processor that is structurally different from the processor running the software development programs. For example, a series of software development programs designed to run on an Intel type processor may include computer program development that will be compatible with a Zilog type processor. In this situation, the computer program being developed cannot be run on the same processor as the software development program. This indicates that a software development program is almost useless in determining the performance of a computer program scheduled to be run by a Zilog processor.

컴퓨터 프로그램 개발의 다른 부분은 프로그램 유지보수로 알려져 있다. 몇몇 경우에 프로그램 유지보수는 초기 버전이 사용자에게 배포된 후에 컴퓨터 프로그램의 진행중인 세분 및 확장을 의미한다. 배포된후 컴퓨터 프로그램을 가장 잘 세분 및 확장시키는 방법을 알기 위해서는 컴퓨터 프로그램이 실행중인 특정 환경을 아는 것이 중요하다. 예를 들어, 컴퓨터 프로그램은 프로그래머가 예측할 수 없었던 방법으로 실행중일 수 있다. 따라서 어떤 환경하에서 컴퓨터 프로그램이 실행중이었는지 판단하기 위해 배포후 몇 시간뒤에 컴퓨터 프로그램으로부터 데이터를 수신하는 것이 유용하다. 이 데이터를 해석함으로서 프로그래머는 어디에서 컴퓨터 프로그램을 최적화시키는 시간을 소비하는지 알게 된다. 결과적으로 대부분의 중요한 모듈은 효율적으로 최적화되는 반면에, 덜 중요한 모듈은 완전히 최적화되지는 않는다.Another part of computer program development is known as program maintenance. In some cases, program maintenance refers to the ongoing segmentation and expansion of a computer program after the initial version is distributed to users. It is important to know the specific environment in which a computer program is running in order to know how to best segment and extend the computer program after it is distributed. For example, a computer program may be running in a way that the programmer could not have predicted. Therefore, it is useful to receive data from a computer program a few hours after distribution to determine under what circumstances the computer program was running. By interpreting this data, the programmer knows where to spend time optimizing a computer program. As a result, most important modules are efficiently optimized, while less important modules are not fully optimized.

종래의 소프트웨어 개발 프로그램은 소프트웨어 개발 프로그램을 실행하는 프로세서와 동일한 형태의 프로세서에서 실행될 개발 프로그램을 위해 존재한다. 그러나, 상기한 것과 같이, 이들 소프트웨어 개발 프로그램들은 소프트웨어 개발 프로그램들을 실행하는 프로세서와 구조적으로 다른 프로세서에서 실행되도록 설계된 개발 프로그램에서는 별로 쓸모가 없다. 또한, 이들 종래의 소프트웨어 개발 프로그램들은 몇몇 태스크(task)가 동시에 실행중일때 실행 데이터 수집의 복잡함으로 인해 멀티태스킹(multi-tasking) 환경에서 잘 동작하지 않는다.Conventional software development programs exist for development programs to be run on the same type of processor as the processor executing the software development program. However, as noted above, these software development programs are of little use in a development program designed to run on a processor that is structurally different from the processor running the software development programs. In addition, these conventional software development programs do not work well in a multi-tasking environment due to the complexity of collecting execution data when several tasks are running simultaneously.

현재 사용가능한 소프트웨어 개발 프로그램들은 소프트웨어 개발 프로그램이 실행되는 프로세서와 구조적으로 다른 프로세서에서 실행될 예정인 프로그램으로부터 데이터를 발생 및 수집하기 위해서도 존재한다. 그러나, 이들 소프트웨어 개발 프로그램은 프로그래머가 컴퓨터의 어떤 부분이 데이터를 발생시켜야만 하며 어떤 부분이 그렇지 않은지 명기할 수 있도록 한다. 이들 소프트웨어 개발 프로그램은 너무 많은 데이터가 발생되어야만 하므로, 데이터 수집 및 해석에서 문제가 초래되는 것을 명기할 수 있다.Currently available software development programs also exist for generating and collecting data from a program that is scheduled to run on a processor that is structurally different from the processor on which the software development program runs. However, these software development programs allow the programmer to specify which parts of the computer must generate data and which parts do not. These software development programs must specify that too much data must be generated, which causes problems in data collection and interpretation.

컴퓨터 프로그램이 지나치게 인스트루먼트(instrument)된다면, 전체 컴퓨터 프로그램의 성능에 악영향을 끼칠 수 있다. 컴퓨터 프로그램을 실행하는 프로세서가 인스트루먼트된 코드를 포함하는 컴퓨터 프로그램의 일부분에 도달할때, 프로세서는 인스트루먼트된 코드(소프트웨어 개발 프로그램에 의해 삽입되었으며 실행 데이터를 발생하는 코드)를 실행시킬 시간을 필요로 한다. 이것은 응용 코드(인스트루먼트된 코드가 아닌 코드)를 실행시키는데 정상적으로 소비되는 시간이다. 대부분의 프로세서들은 컴퓨터 프로그램의 성능에 큰 충격을 주지않고 인스트루먼트된 코드 및 응용(application) 코드를 모두 실행시키기에 충분한 처리 전력을 갖는다. 그러나, 인스트루먼트된 코드가 너무 많으면, 프로세서는 이 인스트루먼트된 계측 코드를 실행시키고 상응 데이터를 발생시키는데 너무 많은 시간을 소비하게 되어 결과적으로 전체 컴퓨터 프로그램의 성능이 받아들일 수 없을 정도로 떨어진다. 따라서, 인스트루먼트하는 컴퓨터 프로그램의 특정 부분을 선택할 수 있게함으로써, 인스트루먼트된 계측 코드의 효과를 최소한으로 유지시킬 수 있다.If a computer program is too instrumented, it can adversely affect the performance of the entire computer program. When a processor executing a computer program reaches a portion of a computer program containing instrumented code, the processor needs time to execute the instrumented code (code inserted by the software development program and generating executable data). . This is the time normally spent executing application code (not instrumented code). Most processors have sufficient processing power to execute both the instrumented and application code without significantly impacting the performance of the computer program. However, if there is too much instrumented code, the processor will spend too much time executing this instrumented instrumentation code and generating corresponding data, resulting in unacceptable performance of the entire computer program. Thus, by being able to select specific portions of the instrumented computer program, the effect of the instrumented metrology code can be kept to a minimum.

따라서, 컴퓨터 프로그램의 특정 부분으로부터 성능 및 디버깅 데이터를 발생 및 수집하기 위해 소프트웨어 개발 프로그램을 갖는 것이 유리하다. 특히, 소프트웨어 개발 프로그램을 실행시키는 프로세서와 구조적으로 다른 프로세서에서 실행시키는 프로그램으로부터 데이터를 수집 및 발생시킬 수 있는 소프트웨어 개발 프로그램을 갖는 것이 유리하다. 이 소프트웨어 개발 프로그램은 멀티태스킹 환경에서 효율적으로 기능할 수 있다. 더욱이, 컴퓨터 프로그램이 실제로 어떻게 실행중인지 나타내기 위해 주기동안 데이터를 수집하는 소프트웨어 개발 프로그램에도 또한 유리하다. 또한, 프로그래머가 모든 프로그램의 다양한 모듈을 실행시키는 테스트 프로그램의 효율을 판단하기 위해 이 데이터를 조사하도록 허용하는 것은 유용하다.Thus, it is advantageous to have a software development program for generating and collecting performance and debugging data from certain portions of a computer program. In particular, it is advantageous to have a software development program capable of collecting and generating data from a program running on a processor that is structurally different from the processor running the software development program. This software development program can function efficiently in a multitasking environment. Moreover, it is also advantageous for software development programs that collect data over a period to indicate how a computer program is actually running. It is also useful to allow programmers to examine this data to determine the effectiveness of test programs that execute various modules of every program.

본 발명은 다수의 모듈을 포함하는 컴퓨터 프로그램을 해석하기 위한 방법 및 장치를 제공한다. 먼저, 컴퓨터 프로그램에 포함될 모듈은 그것에 부가된 코드의 부가 라인들을 포함하여, 그것이 인스트루먼트된 모듈이 되도록 한다. 코드의 부가 라인들은 프로그래머가 컴퓨터 프로그램을 좀 더 효율적으로 개발할 수 있도록 돕기위해 데이터를 발생시킬 것이다. 데이터 처리 시스템에서 실행중일 수 있는 컴퓨터 프로그램을 형성하기 위해 인스트루먼드트된 모듈은 다른 것, 즉 인스트루먼트되지 않은 모듈들과 조합된다. 그후에 컴퓨터 프로그램이 실행된다. 인스트루먼트된 모듈은 데이터 처리 시스템에서 프로세서에 의해 실행될때 데이터를 발생한다. 이 데이터는 데이터를 해석할 수 있는 데이터 처리 시스템으로 전달되고, 이 해석의 결과로서 프로그래머는 컴퓨터 프로그램을 좀 더 효율적으로 개발하기 위해 컴퓨터 프로그램의 성능 및 실행 특성을 조사할 수 있다.The present invention provides a method and apparatus for interpreting a computer program comprising a plurality of modules. First, the module to be included in the computer program includes additional lines of code added to it so that it is an instrumented module. Additional lines of code will generate data to help programmers develop computer programs more efficiently. Instrumented modules are combined with others, ie uninstrumented modules, to form computer programs that may be running in a data processing system. The computer program then runs. Instrumented modules generate data when executed by a processor in a data processing system. This data is passed to a data processing system capable of interpreting the data, and as a result of this interpretation, the programmer can examine the performance and execution characteristics of the computer program to develop the computer program more efficiently.

도1은 본 발명이 적용될 수 있는 데이터 처리 시스템의 사시도,1 is a perspective view of a data processing system to which the present invention can be applied;

도2는 본 발명에 따른 데이터 처리 시스템의 다양한 성분을 도시한 도1에 도시된 데이터 처리 시스템의 블럭도,2 is a block diagram of the data processing system shown in FIG. 1 showing various components of the data processing system according to the present invention;

도3은 본 발명에 따른 실행가능한 컴퓨터 프로그램을 만들기 위한 순서도,3 is a flow chart for making an executable computer program according to the present invention;

도4a는 본 발명에 따른 실행가능한 컴퓨터 프로그램을 실행시키고 실행가능한 컴퓨터 프로그램으로부터 정보를 수집하기 위한 순서도,4A is a flowchart for executing an executable computer program and collecting information from the executable computer program according to the present invention;

도4b는 인스트루먼트된 코드에 의해 발생되는 데이터를 저장하는데 사용되는 테이블의 사시도,4B is a perspective view of a table used to store data generated by the instrumented code;

도5는 본 발명을 구현할 수 있는 컴퓨팅 시스템의 사시도,5 is a perspective view of a computing system that can implement the present invention;

도6은 타겟 데이터 처리 유니트에서 실행중인 컴퓨터 프로그램의 구성도,6 is a configuration diagram of a computer program running in a target data processing unit;

도7은 본 발명이 멀티태스킹 환경에서 데이터를 발생시킬 수 있도록 하는 단일 스레디드 프로세스(threaded process)의 구조도.7 is a structural diagram of a single threaded process that enables the present invention to generate data in a multitasking environment.

* 도면의 주요 부분에 대한 부호 설명* Explanation of symbols on the main parts of the drawing

502,504,506:데이터 처리 시스템 508:타겟 데이터 처리 유니트502, 504, 506: data processing system 508: target data processing unit

602, 604, 614, 616: 인스트루먼트된 모듈602, 604, 614, 616: instrumented modules

606, 616, 622:인스트루먼트되지 않은 모듈606, 616, 622: uninstrumented modules

610, 618: 버퍼610, 618: buffer

본 발명의 상기 및 부가적인 목적, 형태, 및 장점은 다음 상세한 설명에서 명백해질 것이다.These and additional objects, forms, and advantages of the present invention will become apparent from the following detailed description.

첨부된 도면, 특히 도1을 참조하면, 본 발명이 구현되는 데이터 처리 시스템(10)이 도시되어 있다. 도면에 도시된 바와 같이, 데이터 처리 시스템(10)은 서로 연결되어 있는 많은 구성요소들을 포함하고 있다. 특히, 시스템 유니트(12)는 어떠한 임의의 모니터(14)(종래의 영상 디스플레이와 같은)에 연결되어 이를 구동할수 있다. 또한, 시스템 유니트(12)는 PC 키보드(16) 또는 마우스(18)와 같은 입력장치와 선택적으로 연결될 수 있다. 프린터(20)와 같은 임의의 출력장치 역시 시스템 유니트(12)와 연결될 수 있다. 끝으로, 시스템 유니트(12)는 디스켓 드라이브(22)와 같은 하나 이상의 대용량 저장 장치를 포할할 것이다.Referring to the accompanying drawings, in particular FIG. 1, there is shown a data processing system 10 in which the present invention is implemented. As shown in the figure, the data processing system 10 includes many components that are connected to each other. In particular, the system unit 12 may be connected to and drive any arbitrary monitor 14 (such as a conventional video display). In addition, the system unit 12 may be selectively connected with an input device such as a PC keyboard 16 or a mouse 18. Any output device such as printer 20 may also be connected to system unit 12. Finally, system unit 12 will include one or more mass storage devices, such as diskette drive 22.

후술된 바와 같이, 시스템 유니트(12)는 PC 키보드(16) 또는 마우스(18)와 같은 입력장치 또는 로컬(local) 네트워킹 인터페이스에 응답한다. 더욱이, 플로피 디스켓 드라이브(22), 디스플레이(14), 프린터(20) 및 로컬 네트워크 통신 시스템과 같은 입/출력(I/O)장치는 공지의 방법으로 시스템 유니트(12)에 열결된다. 물론, 통상의 지식을 가진자는 통상의 구성요소들이 상호연결을 위해 시스템유니트(12)와 연결될수 있다는 것을 알수 있을 것이다. 본 발명에 따른면, 데이터 처리 시스템(10)은 RAM, ROM 및 다수의 I/O장치와 상호 연결된 시스템 프로세서를 포함한다.As described below, the system unit 12 responds to an input device such as a PC keyboard 16 or a mouse 18 or a local networking interface. Moreover, input / output (I / O) devices such as floppy diskette drive 22, display 14, printer 20 and local network communication system are connected to system unit 12 in a known manner. Of course, those skilled in the art will appreciate that conventional components may be coupled with the system unit 12 for interconnection. In accordance with the present invention, data processing system 10 includes a system processor interconnected with RAM, ROM, and a plurality of I / O devices.

통상의 용도에서, 데이터 처리 시스템(10)은 서버 또는 단일 사용자로서의 소구룹 사용자에게 독립적인 계산력을 주도록 디자인될 수 있으며, 개인 또는 소규모 사업자의 구매를 위해 비싸지 않게 값이 설정된다. 동작에 있어서, 시스템 프로세서는 마이크로소프트사의 윈도우95, IBM사의 OS/2 운영체계 또는 애플 컴퓨터사의 Mac OS 또는 DOS와 같은 운영체계하에서 기능을 수행한다. OS/2는 IBM사의 등록상표이고, "Mac OS"는 애플 컴퓨터사의 등록상표이다.In normal use, data processing system 10 may be designed to give independent computing power to a small group user as a server or a single user, and to be set inexpensively for the purchase of an individual or a small business. In operation, the system processor performs functions under an operating system such as Microsoft's Windows 95, IBM's OS / 2 operating system or Apple Computer's Mac OS or DOS. OS / 2 is a registered trademark of IBM Corporation, and "Mac OS" is a registered trademark of Apple Computer Corporation.

데이터 처리 시스템(10)은 타겟 데이터 처리 유니트(13)과 연결된다. 데이터 처리 시스템(10)은 입/출력 포트를 통해 데이터를 보내고 타겟 데이터 처리 유니트(13)으로부터 데이타를 수신할 수 있다. 타겟 데이터 처리 유니트(13)는 많은 구서요소들중 어느 하나로 구성될 수 있다. 예를들어, 타겟 데이터 처리 유니트(13)는 완벽하게 개발되어 있는 또 하나의 데이터 처리 시스템일수 있고, 또는 대용량 데이터 처리 시스템의 시스템 버스에 연결된 콘트롤러 카드와 같은 대용량 데이터 처리 시스템의 일부일 수 있다. 통상적으로, 타겟 데이터 처리 유니트(13)는 테스트되고 있는 새로운 장치이다. 이러한 경우에 있어서, 데이터 처리 시스템(10)은 자극을 타겟 데이터 처리 유니트(13)에 보내고, 타겟 데이터 처리 유니트(13)로부터의 성능(performance) 및 디버깅 데이터를 수신할 수 있다.The data processing system 10 is connected with the target data processing unit 13. The data processing system 10 may send data through the input / output port and receive data from the target data processing unit 13. The target data processing unit 13 may be composed of any one of many written elements. For example, the target data processing unit 13 may be another data processing system that is fully developed or may be part of a large data processing system such as a controller card connected to the system bus of the large data processing system. Typically, the target data processing unit 13 is a new device under test. In this case, the data processing system 10 may send a stimulus to the target data processing unit 13 and receive performance and debugging data from the target data processing unit 13.

상기 구조를 본 발명과 관련하여 설명하기 전에, 데이터 처리 시스템(10) 동작의 간단한 개요를 고찰하는 것이 도움이 될 것이다. 도2를 참조하면, 본 발명에 따른 데이터 처리 시스쳄(10)의 다양한 구성요소를 설명하는 블록도가 도시되어 있다. 또한, 도2는 마더보드(11)의 구성요소, I/O 슬롯(46a 내지 46d) 및 데이터 처리 시스템(10)의 다른 하드웨어와 마더보드(11)와의 연결을 설명하고 있다. 버스 제어 타이밍 유니트(38)를 통해 고속 CPU 로컬 버스(24)를 경유하여 휘발성 RAM(58)과 연결된 메모리 제어 유니트(50)에 연결되는 마이크로프로세서를 구비한 시스템 중앙 처리 유니트(CPU)(26)가 마더보드(11)와 연결된다.Before describing the structure in connection with the present invention, it will be helpful to consider a brief overview of the operation of the data processing system 10. 2, a block diagram illustrating various components of a data processing system 10 in accordance with the present invention is shown. 2 also illustrates the connections of the motherboard 11 with components of the motherboard 11, I / O slots 46a-46d, and other hardware of the data processing system 10. System central processing unit (CPU) 26 having a microprocessor connected to memory control unit 50 connected to volatile RAM 58 via high speed CPU local bus 24 via bus control timing unit 38. Is connected to the motherboard (11).

도2를 참조하면, CPU 로컬버스(24)(데이타, 어드레스 및 제어 성분을 포함하는)는 CPU(26), 선택적 수치연산 프로세서(27), 캐쉬 제어기(28) 및 캐쉬 메모리(30)의 연결을 제공한다. 또한, 버퍼(32)는 CPU 로컬버스(24)에 연결된다. 버퍼(32) 그 자신은 저속(CPU 로컬버스에 비해) 시스템 버스(34)에 연결되고 어드레스, 데이터 및 제어요소를 포함한다. 시스템 버스(34)는 버퍼(32)와 다른 버퍼(36)사이로 확장되어 있다. 더욱이, 시스템 버스(34)는 버스 제어 및 타이밍 유니트(38) 및 직접 메모리 접근(DMA) 유니트(40)과 연결된다. DMA 유니트(40)는 중앙 중재 유니트(48) 및 DMA 제어기(41)를 포함한다. 버퍼(36)는 PCI(Peripheral Component Interconnect) 버스(44)와 같은 임의 선택기구와 시스템버스(34) 사이의 인터페이스를 제공한다. ISA 버스 또는 NuBus와 같은 다른 버스 아키텍춰가 PCI 버스(44)대신에 사용될 수도 있을 것이다. 이러한 메모리 모듈은 데이터 처리 시스템(10)의 시스템 메모리를 대표한다.Referring to Figure 2, CPU local bus 24 (including data, address and control components) is connected to CPU 26, optional math processor 27, cache controller 28 and cache memory 30. To provide. The buffer 32 is also connected to the CPU local bus 24. The buffer 32 itself is connected to the low speed (relative to the CPU local bus) system bus 34 and contains addresses, data and control elements. System bus 34 extends between buffer 32 and other buffers 36. Moreover, system bus 34 is coupled with bus control and timing unit 38 and direct memory access (DMA) unit 40. The DMA unit 40 includes a central arbitration unit 48 and a DMA controller 41. The buffer 36 provides an interface between the system bus 34 and any selector such as a Peripheral Component Interconnect (PCI) bus 44. Other bus architectures such as the ISA bus or NuBus may be used instead of the PCI bus 44. This memory module represents the system memory of the data processing system 10.

다른 버퍼(66)는 시스템 버스(34)와 마더보드 I/O 버스(68) 사이에 연결된다. 마더보드 I/O 버스(68)은 어드레스, 데이타 및 제어요소 각각을 포함한다. 디스플레이 어댑터(70)(임의의 디스플레이(14)를 구동하는데 사용되는), 클럭(72), 불휘발성 RAM(74)(이하, NVRAM이라 칭함), RS232 어댑터(76), 병렬 어댑터(78), 다수의 타이머(80), 디스켓 어댑터(82) PC 키보드/마우스 제어기(84) 및 ROM(86)과 같은 다른 주변요소 및 다양한 I/O 어댑터들이 마더보드 버스(68)를 따라 연결된다. ROM(86)은 많은 I/O 장치사이의 사용자 투과 통신(user transparent communications)을 제공하는 BIOS를 포함한다.Another buffer 66 is connected between the system bus 34 and the motherboard I / O bus 68. Motherboard I / O bus 68 includes addresses, data, and control elements, respectively. Display adapter 70 (used to drive arbitrary display 14), clock 72, nonvolatile RAM 74 (hereinafter referred to as NVRAM), RS232 adapter 76, parallel adapter 78, Multiple peripherals such as timer 80, diskette adapter 82 PC keyboard / mouse controller 84, and ROM 86 and various I / O adapters are coupled along motherboard bus 68. ROM 86 includes a BIOS that provides user transparent communications between many I / O devices.

포트 A 및 B가 키보드/마우스 제어기(84)에 연결된다. 이들 포트는 키보드 및 마우스를 PC 시스템(ASCⅡ 터미널과 반대로서)에 연결하는데 이용된다. RS 232제어기는 RS232 어뎁터 유니트(76)과 연결된다. 다른 선택적 ASCⅡ 터미널이 이 컨텍터를 통해 시스템과 연결될 수 있다.Ports A and B are connected to the keyboard / mouse controller 84. These ports are used to connect a keyboard and mouse to a PC system (as opposed to an ASCII terminal). The RS 232 controller is connected to the RS232 adapter unit 76. Another optional ASCII terminal can be connected to the system via this contactor.

특히, 데이타 처리 시스템(10)은 몇 개만 언급하여, IBM 개인용 컴퓨터, 애플 매킨토시 컴퓨터 또는 선 위크스테이션과 같은 적합한 어떠한 컴퓨터를 이용하여서라도 구현 될 수 있을 것이다.In particular, only a few data processing systems 10 may be implemented using any suitable computer, such as an IBM personal computer, Apple Macintosh computer, or Sun WeekStation.

본 발명에 따른 수행가능한 컴퓨터 프로그램의 구성을 도시한 데이타 흐름도가 도3에 도시되어 있다. 먼저, 도3에서, 프로그래머는 컴퓨터프로그램의 어떠한 부분을 "인스트루먼트(instrument)"를 선택한다(블럭 300). 용어 "인스트루먼트"는 컴퓨터 프로그램의 주어진 부분에 부가적인 코드라인을 첨가하는 것을 일컫는 것으로, 부가된 코드가 수행될 때, 성능 및 디버깅 데이타가 발생된다. 인스트루먼트된 코드에 의해 발생된 데이타는 테스트되고 있는 컴퓨터 프로그램의 어떠한 성능 특성을 결정하기 위하여 저장되어 분석된다. 본 발명에 있어서, 프로그래머는 인스트루먼트할 컴퓨터 프로그램의 어떤 특성 부분에 선택할 수 있다. 본 발명의 실시예에 있어서, 선택된 소오스 코드 모듈은 인스트루먼트 된다. 종래의 소프트웨어 개발 프로그램에 있어서, 컴퓨터 프로그램의 선택된 부분에 인스트루먼팅하는 선택이 프로그래머에게 주어지지 않았다. 프로그래머는 전체 프로그램을 인스트루먼트하거나 컴퓨터 프로그램을 전혀 인스트루먼트하지 않아야만 했다. 테스트중 컴퓨터 프로그램의 선택된 부분에 인스트루먼테이션을 허용함으로써, 컴퓨터 프로그램은 불필요하게 인스트루먼트된 코드 부분에 포함하지 않을 것이다. 컴퓨터 프로그램내에 너무 많은 인스트루먼트된 코드가 존재하면 테스트되는 컴퓨터 프로그램의 수행이 받아들일 수 없는 상태로 바뀌게 되기 때문에 이는 중요하다.A data flow diagram showing the construction of an executable computer program according to the present invention is shown in FIG. First, in Fig. 3, the programmer selects an "instrument" of any part of the computer program (block 300). The term “instrument” refers to adding additional lines of code to a given portion of a computer program, where performance and debugging data is generated when the added code is executed. The data generated by the instrumented code is stored and analyzed to determine any performance characteristics of the computer program being tested. In the present invention, a programmer can select any characteristic portion of a computer program to be instrumented. In an embodiment of the invention, the selected source code module is instrumented. In conventional software development programs, the programmer has not been given the option of instrumenting selected portions of the computer program. The programmer had to either instrument the entire program or not the computer program at all. By allowing instrumentation in selected portions of the computer program during testing, the computer program will not be included in unnecessarily instrumented code portions. This is important because the presence of too much instrumented code in a computer program can lead to unacceptable execution of the computer program being tested.

이어서, 프로그래머에 의해 선택된 코드가 인스트루먼트 된다(블록 310). 상기와 같이, 코드를 인스트루먼팅하는 것은 수행시 성능 및 디버깅 데이타를 발생하는 부가코드(인스트루먼테이션 코드)의 첨가를 수반한다. 테스트되는 컴퓨터 프로그램내의 이러한 인스트루먼테이션 코드의 위치는 테스트되는 프로그램내의 브랜치 스테이트먼트 상에 삽입된다. 또한, 인스트루먼테이션 코드는 인스트루먼트되기 위해 선택된 각 모듈의 초기에서 종종 발견된다. 이들 위치에 인스트루먼테이션 코드를 위치시킴으로써, 테스트되는 컴퓨터 프로그램의 브랜치 커버리지 분석을 허용하는 데이타가 발생된다. 인스트루먼테이션 코드는 선택된 모듈(응용 코드)내에 이미 존재하는 코드 옆을 따라 존재하고, 응용코드와 동일한 방법으로 수행된다. 테스트중인 컴퓨터 프로그램내의 인스트루먼트된 코드를 어디에 위치 시킬 것인지,이러한 인스트루먼트된 코드가 수행될 때 어떠한 종류의 데이타가 발생되는지에 대한 더욱 상세한 설명은 미합중국, 텍사스 75234, 달라스, 슈트 900, 프리웨이, 3010 L.B.J 소재의 Logiscope Inc.사의 "Logiscope Handbook, Release 1.4, 1994. 4. 25"를 참조한다.The code selected by the programmer is then instrumented (block 310). As above, instrumenting the code involves the addition of additional code (instrumentation code) that generates performance and debugging data at runtime. The location of this instrumentation code in the computer program being tested is inserted onto the branch statement in the program being tested. In addition, instrumentation code is often found at the beginning of each module selected to be instrumented. By placing instrumentation code at these locations, data is generated that allows branch coverage analysis of the computer program being tested. Instrumentation code exists alongside code that already exists in the selected module (application code) and is performed in the same way as application code. For a more detailed description of where to place instrumented code in the computer program under test and what kind of data is generated when such instrumented code is executed, see United States, Texas 75234, Dallas, Suit 900, Freeway, 3010 LBJ. See "Logiscope Handbook, Release 1.4, April 25, 1994," by Logiscope Inc. of the material.

프로그래머가 인스트루먼트(블록 320)를 위해 선택하지 않은 코드는 블럭 310에서 인스트루먼트된 코드와 결합한다(블럭 330). 전체 프로그램을 포함하지 않은 코드는 수집되어 목적 코드를 만들어 수행가능한 컴퓨터 프로그램을 형성하기 위하여 링크된다(블럭 330). 코드 부분이 조합되어 수행가능한 컴퓨터 프로그램으로 되돌려지는 정확한 방법은 시스템 별로 크게 다르다. 그러나, 통상의 지식을 가진자에게 잘 알려져 있다. 블록 300 내지 330의 총결과가 수행 가능한 컴퓨터 프로그램으로서 도시되어 있다(블록 340).Code that the programmer did not select for the instrument (block 320) is combined with the code instrumented at block 310 (block 330). Code that does not include the entire program is collected and linked to form a computer program executable to produce the object code (block 330). The exact way in which code fragments are combined and returned to executable computer programs varies widely from system to system. However, it is well known to those skilled in the art. The aggregate results of blocks 300-330 are shown as a computer program capable of performing (block 340).

도 4A는 수행 가능한 컴퓨터 프로그램이 수행되고, 컴퓨터 프로그램으로부터 데이타가 수집되는 방법을 도시하고 있다. 먼저, 블록 340에 도시되어 있는 수행 가능한 컴퓨터 프로그램은 수행될 타겟 데이타 처리 유니트로 전송될 수 있다(단계 400). 이 단계는 선택적이다. 몇몇 예에서 있어서, 수행 가능한 컴퓨터 프로그램은 블록 330에서 수집되어 링크되는 동일한 데이타 처리 시스템에서 수행되도록 디자인 될 것이다. 예를들어, 프로그래머가 마이크로소프트사의 윈도우 운영체계에서 동작하는 Intel 마이크로프로세서 상에서 수행될 컴퓨터 프로그램를 개발중에 있다면, 그 프로그램은 윈도우 운영체계에서 동작하는 Intel사의 마이크로프로세서를 사용한 데이터 처리 시스템상에서 개발되는 것이 가장 좋을 것이다. 그러한 경우라면, 컴퓨터 프로그램은 원래 개발되었던 동일한 머신(machine)상에서 테스트될 수 있을 것이다. 그러나, Intel 마이크로프로세서를 사용하면서 윈도우 운영체계에서 동작하는 데이터 처리 시스템이 모토롤라사에 의한 내장형 마이크로콘트롤러상에서 수행되도록 디자인된 컴퓨터 프로그램를 개발중에 있다면, 개발중인 컴퓨터 프로그램은 Intel 머신상에서 수행될 수 없을 것이다. 이 경우에, 컴퓨터 프로그램이 수행되기 전에, 수행가능한 컴퓨터 프로그램은 그 내장형 마이크로콘트롤러로 전송되어져야만 한다. 하나의 컴퓨팅(computing) 유니트에서 다른 유니트로 수행가능한 컴퓨터 프로그램를 전송하는 많은 방법이 존재한다. 이러한 예로서, 직렬 포트, 병렬 포트 및 LAN이 있다.4A illustrates how a viable computer program is executed and data is collected from the computer program. First, the executable computer program shown in block 340 may be transferred to the target data processing unit to be executed (step 400). This step is optional. In some examples, the executable computer program may be designed to run in the same data processing system that is collected and linked in block 330. For example, if a programmer is developing a computer program to run on an Intel microprocessor running on Microsoft's Windows operating system, the program is best developed on a data processing system using an Intel microprocessor running on a Windows operating system. will be good. If so, the computer program could be tested on the same machine that was originally developed. However, if a data processing system running on a Windows operating system using an Intel microprocessor is developing a computer program designed to run on an embedded microcontroller by Motorola, the computer program under development will not be able to run on an Intel machine. In this case, before the computer program is executed, the executable computer program must be transferred to the embedded microcontroller. There are many ways to transfer a computer program executable from one computing unit to another. Examples of this are serial ports, parallel ports and LANs.

계속하여, 수행가능한 컴퓨터 프로그램이 타겟 데이터 처리 유니트 상에서 수행된다(단계 410). 테스트되는 컴퓨터 프로그램의 수행을 개시하는 정확한 방법은 시스템에 따라 상당히 다르다. 몇몇예에 있어서, 수행가능한 프로그램은 운영체계의 제어하에서 동작할 것이다. 다른 예에 있어서, 특히, 내장형 마이크로콘트롤러에 있어서 테스트되는 컴퓨터 프로그램은 내장형 마이크로콘트롤러상에서 수행될 프로그램의 전 세트를 포함할 것이다. (즉, 운영체계 및 여러 응용프로그램). 타겟 데이터 처리 유니트상에서 수행되는 동안, 테스트되는 컴퓨터 프로그램은 정규 베이스상에서 정상적으로 수행되지 않는 컴퓨터 프로그램의 다양한 부분을 실행하도록 디자인된 일련의 테스트 자극을 수신할 것이다. 또한, 일반적으로 프로그래머는 컴퓨터 프로그램을 최적화하기 위하여 정상모드 동작에서 컴퓨터 프로그램 수행과 더불어 단순히 데이터를 발생하기를 원할것이다.Subsequently, an executable computer program is executed on the target data processing unit (step 410). The exact method of initiating the performance of the computer program being tested varies considerably from system to system. In some instances, executable programs will run under the control of an operating system. In another example, in particular, the computer program tested in the embedded microcontroller will include a full set of programs to be run on the embedded microcontroller. (I.e. operating system and multiple applications). While running on the target data processing unit, the computer program being tested will receive a series of test stimuli designed to execute various parts of the computer program that do not normally run on a regular base. Also, programmers generally want to generate data in addition to computer program execution in normal mode operation in order to optimize computer programs.

인스트루먼트된 코드에 의해 발생된 테스트 데이터는 이후에 분석될 수 있도록 전달 및 저장된다(단계 420). 상기와 같이, 인스트루먼트된 코드 세그먼트는 실행될때 데이터를 발생시킨다. 그후에 이 데이터는 분석될 수 있도록 전달 및 저장된다. 예를 들어, 인스트루먼트된 코드는 직렬 포트로 데이터를 출력시키거나, 또는 하드 디스크에 이 데이터를 저장할 수 있다. 또한, 데이터는 긴 주기동안에 분석을 용이하게 하는 데이터베이스 구조에 저장될 수 있다. 인스트루먼트된 코드에 의해 발생된 데이터는 도4B에 도시된 형태로 저장된다.Test data generated by the instrumented code is passed and stored for later analysis (step 420). As above, the instrumented code segment generates data when executed. This data is then forwarded and stored for analysis. For example, instrumented code can output data to a serial port or store it on a hard disk. In addition, data can be stored in a database structure that facilitates analysis over long periods of time. The data generated by the instrumented code is stored in the form shown in FIG. 4B.

이제 도4B를 참조하면, 테이블(450)이 도시되어 있다. 테이블(450)은 일련의 프레임으로 구성된다. 테이블(450)에서 전형적인 다른 프레임인 프레임(452)은 몇몇 필드(field)를 포함한다. 포인터 필드(454)는 프레임(452)내의 다른 필드의 위치를 포함하는 포인터이다. 다음으로 계수 필드(456)는 몇번이나 실행되었던 인스트루먼테이션 코드의 주어진 부분을 저장하는데 사용되는 계수값을 포함한다. 데이터 필드(458)는 인스트루먼테이션 코드의 어떤 부분에 의해 발생된 데이터 항목을 자장하는데 사용된다. 최종적으로, 길이 필드(460)는 데이터 필드(458)내의 데이터 길이를 나타낸다.Referring now to FIG. 4B, a table 450 is shown. The table 450 is composed of a series of frames. Frame 452, another typical frame in table 450, includes several fields. Pointer field 454 is a pointer that contains the location of another field within frame 452. The coefficient field 456 then contains the coefficient value used to store a given portion of the instrumentation code that has been executed many times. Data field 458 is used to field data items generated by some portion of the instrumentation code. Finally, the length field 460 represents the data length in the data field 458.

상기와 같이, 계수 필드(456)는 실행되었던 인스트루먼테이션의 주어진 부분의 횟수를 저장한다. 인스트루먼테이션 코드의 주어진 부분이 한번 이상 실행되었다면, 다른 프레임은 테이블(450)에 부가될 필요가 없다. 대신에, 인스트루먼테이션 코드의 주어진 부분에 의해 이전에 발생된 프레임은 증가된 자신의 계수 필드를 가질 수 있다. 이런 방식에서 기억 공간은 보존될 수 있다.As above, coefficient field 456 stores the number of times a given portion of instrumentation has been performed. If a given portion of the instrumentation code has been executed more than once, no other frame needs to be added to the table 450. Instead, a frame previously generated by a given portion of the instrumentation code may have its coefficient field incremented. In this way the memory space can be preserved.

듀플리케이트 트레이스가 인스트루먼테이션 코드의 주어진 부분에 의해 발생되는지 판단하는 효과적인 방법은 다음과 같은 해쉬값을 발생시키는 것이다.An effective way to determine if duplicate traces are generated by a given piece of instrumentation code is to generate a hash value such as

Figure pat00001
Figure pat00001

여기서, 데이터[i]는 데이터 필드의 각 데이터 바이트를 나타낸다. 이 해쉬값을 사용하면, 기록될 프레임이 이전에 존재한 프레임의 듀플리케이트인지 판단하기 위해 테이블(450)을 조속하게 가리킬 수 있다. 이전에 존재한 프레임은 기록될 프레임과 대등하다면, 기록될 프레임은 삭제될 것이고 이전에 존재한 프레임의 계수 필드는 증가될 것이다. 계수 필드의 값이 증가시킴으로서만 듀플리케이트 프레임 기록에 필요한 시간 및 공간이 보존될 것이다.Here, data [i] represents each data byte of the data field. Using this hash value, one can quickly point the table 450 to determine if the frame to be recorded is a duplicate of a previously existing frame. If the previously existing frame is equivalent to the frame to be recorded, the frame to be recorded will be deleted and the coefficient field of the previously existing frame will be increased. Only by increasing the value of the coefficient field will the time and space necessary for duplication frame recording be preserved.

도4A를 다시 참조하면, 인스트루먼트된 코드에 의해 발생된 데이터는 데이터를 분석할 수 있는 데이터 처리 시스템으로 전송된다(단계 430). 단계 400과 같이, 단계 430은 인스트루먼트된 코드에 의해 발생된 데이터를 분석할 수 있는 데이터 처리 시스템에서 컴퓨터 프로그램이 이미 실행중이라면 선택된다. 그러나, 인스트루먼트된 코드가 내장형 마이크로콘트롤러에서 실행중이면, 인스트루먼트된 코드에 의해 발생된 데이터는 분석을 위해 범용 데이터 처리 시스템으로 전송될 필요가 있다.Referring again to FIG. 4A, data generated by the instrumented code is sent to a data processing system capable of analyzing the data (step 430). As in step 400, step 430 is selected if a computer program is already running in a data processing system capable of analyzing data generated by the instrumented code. However, if the instrumented code is running on an embedded microcontroller, the data generated by the instrumented code needs to be sent to a general purpose data processing system for analysis.

최종적으로, 인스트루먼트된 코드가 실행되었을때 발생된 데이터가 분석된다(단계 440). 이 분석은 한벌의 테스트 프로그램의 브랜치 커버리지를 판단할 수 있거나, 또는 컴퓨터 프로그램의 부분들이 주어진 조건하에서 대부분 실행중인 것을 보여준다. 예를 들어, 인스트루먼트된 코드에 의해 발생된 데이터에서 가능한 분석 형태들은 Logiscope Handbook을 참조하라.Finally, the data generated when the instrumented code is executed is analyzed (step 440). This analysis can determine the branch coverage of a set of test programs, or show that portions of a computer program are mostly running under given conditions. For example, see the Logiscope Handbook for possible analysis types in the data generated by the instrumented code.

이제 도5를 참조하면, 본 발명을 구현하기 위한 전형적인 컴퓨터 시스템의 사시도이다. 데이터 처리 시스템(502)내에 포함된 것은 개발중인 프로그램 및 본 발명에 따른 소프트웨어 개발 프로그램이다. UNIX 기반 워크스테이션(workstation)일 수 있는 데이터 처리 시스템(502)에서, 사용자는 인스트루먼트하는 프로그램내의 소스 코드 모듈을 선택할 수 있다. 그후에 소프트웨어 개발 프로그램의 일부인 인스트루먼터 도구는 선택된 모듈내에서 소스 코드의 라인을 삽입한다. 인스트루먼터 도구에 의해 삽입된 소스 코드의 부가 라인들은 타겟 데이터 처리 유니트(508)에 의해 실행될때 실행 데이터를 발생시킬 것이다. 최종 컴퓨터 프로그램에 포함될 필요가 있는 다른 소스 코드 모듈 및 다른 루틴들과 함께 인스트루먼트된 소스 모듈은 데이터 처리 시스템(502)에서 컴파일(compile) 및 링크(link)된다. 결과는 타겟 데이터 처리 유니트(508)에 의해 실행될 수 있는 프로그램이다.Referring now to FIG. 5, a perspective view of a typical computer system for implementing the present invention. Included in data processing system 502 are the program under development and the software development program according to the present invention. In the data processing system 502, which may be a UNIX-based workstation, a user may select source code modules within the instrumenting program. The instrumenter tool, which is then part of the software development program, inserts a line of source code within the selected module. Additional lines of source code inserted by the instrumenter tool will generate execution data when executed by the target data processing unit 508. Source modules instrumented along with other source code modules and other routines that need to be included in the final computer program are compiled and linked in the data processing system 502. The result is a program that can be executed by the target data processing unit 508.

타겟 데이터 처리 유니트(508)에서 실행될 수 있는 프로그램을 발생시킨후에, 데이터 처리 시스템(502)는 실행할 수 있는 프로그램을 타겟 데이터 처리 유니트(508)로 전송한다.After generating a program that can be executed in the target data processing unit 508, the data processing system 502 sends the executable program to the target data processing unit 508.

도5에 도시된 것과 같이, 타겟 데이터 처리 유니트(508)는 디스크 드라이브의 어레이를 위한 제어기이다. 그러나, 타겟 데이터 처리 유니트(508)는 원격 통화 또는 다른 컴퓨팅 기술에 사용되는 다수의 타겟 데이터 처리 유니트중 하나의 형태를 취할 수 있다.As shown in Figure 5, the target data processing unit 508 is a controller for an array of disk drives. However, target data processing unit 508 may take the form of one of a number of target data processing units used in remote calls or other computing technologies.

일단 실행할 수 있는 컴퓨터 프로그램이 타겟 데이터 처리 유니트(508)로 전송되었으면, 프로그램이 실행된다. 실행동안에 데이터 처리 시스템(506)은 타겟 데이터 처리 유니트(508)로 일련의 테스트 자극을 전송한다. 이들 테스트 자극은 정상적으로 동작되지 않는 코드 부분을 실행하도록 설계될 수 있고, 또는 테스트 자극은 수행되는 프로그램내에 특정 코드 부분의 성능을 테스트할 수 있다.Once the executable computer program has been transferred to the target data processing unit 508, the program is executed. During execution, the data processing system 506 sends a series of test stimuli to the target data processing unit 508. These test stimuli may be designed to execute portions of code that do not operate normally, or the test stimuli may test the performance of specific portions of code in the program being executed.

타겟 데이터 처리 유니트(508)상에서 수행되는 프로그램내의 인스트루먼트된 모듈이 실행될때, 이 모듈은 프로그램의 성능 및 커버리지를 반영하는 실행 데이터를 발생한다. 예를 들어, 모듈내의 인스트루먼테이션 코드는 어떤 변수값을 보고하고, 또는 특정 브랜치 코드가 실행되었음을 알릴 것이다.When an instrumented module in a program executed on the target data processing unit 508 is executed, the module generates execution data that reflects the performance and coverage of the program. For example, the instrumentation code in a module will report the value of some variable, or indicate that a particular branch code has been executed.

실시예에서, 초기 실행이 될 경우 인스트루멘테이션 코드는 데이터의 초기 세트를 저장할 것이다. 초기 실행 이후, 인스트루멘테이션 코드는 다음 실행에서 소량의 데이터를 발생시킬 것이다. 이러한 방법의 동작으로 인스트루멘테이션 코드는 이전에 발생된 데이터의 이중적인 데이터의 발생을 방지할 수 있다. 이것은 타겟 데이터 처리 장치의 메모리 자원을 저장하는데 도움이 된다. 또한 일정한 인스트루멘테이션 코드가 실행될 경우 계수기를 증분시킬수 있다. 계수기의 값은 시험된 프로그램의 특별한 지로가 실행된 횟수를 나타낸다.In an embodiment, the instrumentation code will store an initial set of data if it is to be initially executed. After the initial run, the instrumentation code will generate a small amount of data in the next run. The operation of this method allows the instrumentation code to prevent the occurrence of duplicate data of previously generated data. This helps to store memory resources of the target data processing apparatus. You can also increment the counter when certain instrumentation code is executed. The value of the counter indicates the number of times a particular branch of the program tested was executed.

인스트루멘테이션 코드가 데이터를 발생시킬 경우, 타겟 데이터 처리 장치(508)의 메모리에 위치한 버퍼에 데이터를 저장시킨다. 타겟 데이터 처리 장치(508)의 메모리에 인스트루멘테이션으로 발생된 데이터를 저장하는 것은 타겟 데이터 처리 장치(508)의 메모리 자원을 소모하는 것이다. 그러나, 이런 방법으로데이터를 저장하는 것은 거의 실행 시간이 소요되지 않아 타겟 데이터 처리 장치(508)에서 프로그램 실행에 큰 영향을 주지 않는다. 다른 실시예에서, 데이터 발생시 데이터가 데이터 처리 시스템(504)에 직접적으로 전송될 수 있거나 데이터가 타겟 데이터 처리 장치(508)에 연결된 비휘발성 저장 장치에 저장될 수 있다.When the instrumentation code generates data, the data is stored in a buffer located in the memory of the target data processing apparatus 508. Storing data generated by instrumentation in the memory of the target data processing apparatus 508 consumes memory resources of the target data processing apparatus 508. However, storing data in this manner requires little execution time and does not significantly affect program execution in the target data processing apparatus 508. In other embodiments, data may be sent directly to the data processing system 504 upon data generation, or the data may be stored in a nonvolatile storage device coupled to the target data processing device 508.

타겟 데이터 처리 장치(508)에서 실행된 프로그램이 종료된 후, 타겟 데이터 처리 장치(508)의 메모리 버퍼에서 저장되는 실행 데이터는 데이터 처리 시스템(504)에 전달된다. 실행 데이터가 데이터 처리 시스템(504)내에 위치할 경우, 소프트웨어 개발 프로그램은 지시 지로와 결정 경로 적용 방법을 이용한 시험 프로그램의 종료를 결정하기 위해 데이터를 평가할 수 있다. 이러한 분석 결과를 연구하여 프로그래머는 더 효율적으로 프로그램을 최적화하고 개발할 수 있다.After the program executed in the target data processing apparatus 508 is finished, the execution data stored in the memory buffer of the target data processing apparatus 508 is transferred to the data processing system 504. When the execution data is located in the data processing system 504, the software development program may evaluate the data to determine the end of the test program using the instruction point and the decision path application method. By studying these analyzes, programmers can optimize and develop programs more efficiently.

도6은 타겟 데이터 처리 장치에서 실행되는 컴퓨터 프로그램의 구성의 다이어그램을 나타낸다. 특별한 예에서 실행 컴퓨터 프로그램과 타겟 데이터 처리 장치는 동시에 몇 개의 태스크를 실행시킬 수 있다. 태스크는 하나 또는 그 이상의 모듈의 논리적인 그룹핑을 포함하는 실행 컴퓨터 내의 구조로서 정의된다. 그것들이 동시에 데이터를 처리할 수 있도록 프로그램 내의 태스크가 구성된다.6 shows a diagram of the configuration of a computer program executed in a target data processing apparatus. In a particular example, the executing computer program and the target data processing device may execute several tasks at the same time. A task is defined as a structure in an execution computer that includes a logical grouping of one or more modules. Tasks in the program are organized so that they can process data at the same time.

세 가지 태스크(608, 620, 624)가 도 6 에서 나타난다. 태스크(608)는 세 가지 모듈(602, 604, 606)을 포함한다. 태스크(620)는 모듈(616, 614)을 포함하고 태스크(624)는 단일 모듈인, 모듈(622)을 포함한다.Three tasks 608, 620, 624 are shown in FIG. 6. Task 608 includes three modules 602, 604, and 606. Task 620 includes modules 616 and 614 and task 624 includes module 622, which is a single module.

본 발명에 따르면, 프로그래머는 인스트루멘테이션되는 다중 태스크 컴퓨터 프로그램(612)에 포함되는 모듈을 선택한다. 모듈(602, 604, 614)은 인스트루멘테이션 코드를 포함하고 실행시 실행 데이터를 발생시킨다.According to the present invention, the programmer selects the modules included in the instrumented multitask computer program 612. Modules 602, 604, and 614 include instrumentation code and generate execution data at run time.

인스트루멘테이션 코드를 포함하는 모듈이 실행될 경우 발생되는 데이터를 저장하기 위해 버퍼(610, 618)를 구비한다. 버퍼(610, 618)는 큰 단일 버퍼를 포함하거나 서로 연결되는 일련의 작은 버퍼를 포함한다. 본 발명에 따라서, 분리 버퍼는 인스트루멘테이션된 코드를 포함하는 모듈의 각 태스크를 위해 구비된다. 단지 단일 버퍼가 인스트루멘테이션된 코드를 포함하는 모듈을 가진 시스템에 구비될 경우에 각 태스크 내에 인스트루멘테이션 코드는 동일 버퍼에 위치한 다른 태스크의 실행 데이터를 계속해서 겹쳐 쓰고 간섭한다. 인스트루멘테이션 코드를 포함하는 각 태스크를 위해 분리 버퍼를 구비함으로써, 한 태스크의 한 모듈에 의해 발생되는 데이터가 또다른 태스크의 또다른 모듈에 의해 발생되는 데이터를 간섭할 위험은 없을 것이다.Buffers 610 and 618 are provided to store data generated when a module containing instrumentation code is executed. Buffers 610 and 618 include a large single buffer or a series of small buffers connected to each other. In accordance with the present invention, a separate buffer is provided for each task of the module that contains the instrumented code. If only a single buffer is provided in a system with modules containing instrumented code, the instrumentation code within each task continues to overwrite and interfere with the execution data of other tasks located in the same buffer. By having a separate buffer for each task that contains instrumentation code, there will be no risk of data generated by one module of one task interfering with data generated by another module of another task.

이렇게 인스트루먼트된 모듈(602, 604)에 의해 발생된 실행 데이터는 버퍼(610)에 저장되며, 반면 인스트루멘테이션된 모듈(614)은 버퍼(618)에 그것의 실행 데이터를 저장한다. 결국, 태스크(624)를 인스트루멘테이션된 모듈이 존재하지 않기 때문에, 태스크(624)와 관련된 버퍼는 존재하지 않는다.Execution data generated by such instrumented modules 602, 604 is stored in buffer 610, while instrumented module 614 stores its execution data in buffer 618. As a result, there is no buffer associated with task 624 because no module has been instrumented with task 624.

도7은 본 발명에 따른 다중 태스크 환경에서 발생할 수 있는 단일 연결처리이다. 도7에서 나타나는 처리는 본 발명에 따라서 수정될 수 있었던 가능한 흐름의 대표적인 예이다. 처리는 태스크(700)로 시작한다. 태스크(700)에서 태스크(700)의 시작과 같이 나타나고 인스트루멘테이션 코드의 두 개의 분할 영역과 다른 표준 응용 코드가 나타난다.7 is a single connection process that may occur in a multiple task environment in accordance with the present invention. The processing shown in Figure 7 is a representative example of a possible flow that could be modified in accordance with the present invention. Processing begins with task 700. Task 700 appears as the start of task 700 and shows two slices of instrumentation code and other standard application code.

초기에 태스크(700)가 실행될 것이다. 다음 인스트루멘테이션 코드(702)가 실행될 것이다. 이 시점에서 처리의 흐름은 루틴(706)으로 전환할 것이다. 직접적으로 루틴(706)에 입력되자마자 코드는 타겟 데이터 처리장치가 인터럽트 역할을 할 수 없도록 실행된다. 이 코드는 Int-Lock으로 지칭된다. 인터럽트 역할을 방지함으로써 타겟 데이터 처리장치는 루틴(706)을 떠나지 않고 인스트루멘테이션 코드에 의해 지정된 데로 데이터의 로깅을 완료시킬 수 있게 보장된다. 태스크(700)와 관련된 버퍼에 저장된 실행 데이터는 적절히 명령될 수 있게 보장된다.Initially task 700 will be executed. The next instrumentation code 702 will be executed. At this point the flow of processing will switch to the routine 706. As soon as it is directly entered into the routine 706, the code is executed such that the target data processor cannot act as an interrupt. This code is called Int-Lock. By avoiding the interrupt role, the target data processing device is guaranteed to be able to complete the logging of data as specified by the instrumentation code without leaving the routine 706. Execution data stored in a buffer associated with task 700 is guaranteed to be properly ordered.

루틴(706)이 역할 수행을 불가능하게 또는 인터럽트시킨 후, 인스트루멘테이션 코드에 의해 지정된 데로 데이터는 태스크(700)와 관련된 버퍼에 로그될 것이다. 도7에서 이 버퍼는 버퍼(700)로 지칭된다. 모든 데이터가 버퍼(700)에 로그된 후에 루틴(706)은 인터럽트의 역할 수행을 가능하게 할 것이다. 역할 수행을 기능하게 하거나 인터럽트를 가능하게 하는 코드는 Int-Unlock으로 지칭된다. 이 시점에서 루틴(706)은 태스크(700)로 전환된다..After the routine 706 disables or interrupts the performance of the role, the data will be logged in the buffer associated with the task 700 as specified by the instrumentation code. In Figure 7, this buffer is referred to as buffer 700. After all data has been logged to the buffer 700, the routine 706 will be able to act as an interrupt. The code that makes the role perform or enables interrupts is called Int-Unlock. At this point routine 706 transitions to task 700.

인스트루멘테이션 코드(702)를 실행시킨후, 태스크(700)는 실제 인스트루멘테이션 코드(704)를 실행할 것이다. 인스트루멘테이션 코드(702)의 실행과 동일한 방법으로, 인스트루멘테이션 코드(704)의 실행은 제어를 태스크(700)에서 루틴(706)으로 전환시킬 것이다. 다시, 인스트루멘테이션 코드(702)의 경우 처럼, 루틴(706)은 인터럽트의 역할 수행을 불가능하게 하며, 인스트루멘테이션(704)에 의해 태스크(700)와 관련된 버퍼에 지정한데로 데이터를 로그시킨다. 그리고나서 인터럽트 역할 수행을 가능하게한다. 이 시점에서 루틴(706)은 제어를태스크(700)로 전환시킨다.After executing the instrumentation code 702, the task 700 will execute the actual instrumentation code 704. In the same manner as the execution of the instrumentation code 702, the execution of the instrumentation code 704 will transfer control from task 700 to the routine 706. Again, as in the case of instrumentation code 702, routine 706 disables the role of interrupts, and logs data as specified by instrumentation 704 in the buffer associated with task 700. Then it becomes possible to act as an interrupt. At this point, the routine 706 transfers control to the task 700.

실제로, 태스크(700)는 종결될 것이다. 이 시점에서 태스크(710)는 초기화된다. 태스크(710)는 태스크(700)와 비슷한 방법으로 실행될 것이다. 인스트루멘테이션 코드(712, 714)는 태스크(710)와 관련된 버퍼에 데이터를 로그시키기 위해 루틴(716)을 요청한다. 도7에서 나타난 예에서 태스크(710)가 실행을 완료시킨후 태스크(700)는 다시 실행될 것이다. 태스크(700)는 상기한 것과 같이 실행될 것이고, 몇몇 지점에서 태스크(720)로 실행을 스위치할 것이다. 태스크(720)는 태스크(700, 710)과 아주 유사한 방식으로 실행될 것이다. 인스트루먼테이션 코드(722, 724)는 태스크(720)과 연관된 버퍼에 데이터를 등록하기 위해 루틴(726)을 호출할 것이다.In practice, task 700 will be terminated. At this point, task 710 is initialized. Task 710 will be executed in a similar manner as task 700. Instrumentation code 712, 714 requests routine 716 to log data to a buffer associated with task 710. In the example shown in FIG. 7, task 700 will execute again after task 710 completes execution. Task 700 will execute as described above and will switch execution to task 720 at some point. Task 720 will be executed in a manner very similar to tasks 700 and 710. Instrumentation code 722, 724 will call routine 726 to register data in a buffer associated with task 720.

본 발명이 완전한 기능 세트의 데이터 처리 시스템의 내용에 설명되는 동안, 종래 기술에 익숙한 사람들은 본 발명의 장치가 다양한 형태로 명령어 컴퓨터 판독가능 매개체의 형태로 분배될 수 있으며, 본 발명은 분배를 실제적으로 실행하기 위해 사용되는 특정 형태의 신호 관계 매체를 고려하지 않고 동등하게 적용한다는 것을 인식할 것이다. 컴퓨터 판독가능 매체의 예는 플로피 디스트(floppy disk) 및 씨디롬(CD-ROM)과 같은 기록가능형 매체 및 디지탈 및 아날로그 통신 링크와 같은 전송형 매체를 포함한다.While the invention has been described in the context of a full functional set of data processing systems, those skilled in the art will appreciate that the apparatus of the invention may be dispensed in a variety of forms in the form of instruction computer readable media, the invention of which is intended to facilitate It will be appreciated that the same applies to the particular type of signal relation medium used to implement the same. Examples of computer readable media include recordable media such as floppy disks and CD-ROMs and transmission media such as digital and analog communication links.

본 발명이 바람직한 실시예를 참조하여 특정하게 도시 및 설명되었지만, 종래 기술에 익숙한 사람들에게는 형태상으로 다양한 변경 및 상세한 설명이 본 발명의 정신 및 범위를 벗어나지 않고 이루어질 수 있다는 것이 이해될 것이다.While the invention has been particularly shown and described with reference to preferred embodiments, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention.

전술한 바와 같은 본 발명에 따라 제공되는 다수의 모듈을 포함하는 컴퓨터 프로그램을 해석하기 위한 방법 및 장치에 있어서는, 컴퓨터 프로그램에 포함될 모듈이 그것에 부가된 코드의 부가 라인들을 포함하여, 그것이 인스트루먼트된 모듈이 되도록 하므로써, 프로그래머가 컴퓨터 프로그램을 좀 더 효율적으로 개발할 수 있도록 하는 효과가 있다.In a method and apparatus for interpreting a computer program comprising a plurality of modules provided according to the present invention as described above, the module to be included in the computer program includes additional lines of code added thereto, By doing so, programmers can develop computer programs more efficiently.

Claims (16)

컴퓨터 프로그램의 성능 및 실행 특성을 판단하기 위해 다수의 모듈을 포함하는 컴퓨터 프로그램을 분석하기 위한 방법에 있어서,A method for analyzing a computer program comprising a plurality of modules for determining performance and execution characteristics of the computer program, the method comprising: 하나의 인스트루먼트된 모듈을 생성하기 위해 컴퓨터 프로그램 내의 하나의 모듈을 인스트루먼트하는 단계 - 여기서, 상기 다수의 모듈 중에서 다른 모듈은 인스트루먼트되지 않은 모듈임 - ;Instrumenting one module in a computer program to create one instrumented module, wherein another module of the plurality of modules is an uninstrumented module; 컴퓨터 프로그램을 형성하기 위해 상기 인스트루먼트되지 않은 모듈과 상기 인스트루먼트된 모듈을 조합하는 단계;Combining the uninstrumented module with the instrumented module to form a computer program; 데이터 처리 시스템 상에서 상기 컴퓨터 프로그램을 실행하는 단계;Executing the computer program on a data processing system; 상기 인스트루먼트된 모듈이 실행될 때 실행 데이터를 발생하는 단계; 및Generating execution data when the instrumented module is executed; And 상기 컴퓨터 프로그램의 성능 및 실행 특성을 판단하기 위해 상기 실행 데이터를 분석하는 단계Analyzing the execution data to determine performance and execution characteristics of the computer program 를 포함하는 컴퓨터 프로그램 분석 방법.Computer program analysis method comprising a. 제1항에 있어서,The method of claim 1, 상기 조합 단계 이후에, 상기 컴퓨터 프로그램을 타겟 데이터 처리 유니트로 통신하는 단계를 더 포함하고;After the combining step, further comprising communicating the computer program to a target data processing unit; 상기 인스트루먼트 단계와 조합 단계는 소스 데이터 처리 시스템 상에서 수행되고, 상기 실행 및 발생 단계는 타겟 데이터 처리 유니트 상에서 수행되는The instrument step and the combining step are performed on a source data processing system, and the executing and generating steps are performed on a target data processing unit. 컴퓨터 프로그램 분석 방법.Computer program analysis method. 제2항에 있어서,The method of claim 2, 상기 타겟 데이터 처리 유니트는 내장형 마이크로콘트롤러인The target data processing unit is a built-in microcontroller 컴퓨터 프로그램 분석 방법.Computer program analysis method. 제1항에 있어서,The method of claim 1, 상기 인스트루먼트된 모듈은 상기 실행 단계에 응답하여 변경되지 않은 인스트루먼테이션 코드를 포함하는The instrumented module includes instrumentation code that has not changed in response to the executing step. 컴퓨터 프로그램 분석 방법.Computer program analysis method. 컴퓨터 프로그램을 효과적으로 개발하기 위해 실행 데이터를 분석하기 위한 데이터 처리 시스템에 있어서,A data processing system for analyzing execution data for effectively developing a computer program, 데이터 처리 시스템;Data processing systems; 인스트루먼트된 코드를 포함하는 하나의 인스트루먼트된 모듈과 인스트루먼트되지 않은 코드를 포함하는 하나의 모듈을 포함하여 다수의 모듈을 구비한 컴퓨터 프로그램 - 여기서, 상기 데이터 처리 시스템이 상기 컴퓨터 프로그램을 실행할 때, 상기 인스트루먼트된 모듈은 실행 데이터를 발생함 - ;A computer program having a plurality of modules, including one instrumented module containing instrumented code and one module containing uninstrumented code, wherein when the data processing system executes the computer program, the instrument Module generates run data; 상기 실행 데이터를 수집 및 저장하기 위한 수단; 및Means for collecting and storing the execution data; And 상기 컴퓨터 프로그램이 효과적으로 개발되도록 상기 컴퓨터 프로그램의 성능 및 실행 특성을 판단하기 위해 상기 실행 데이터를 분석하기 위한 수단Means for analyzing the execution data to determine performance and execution characteristics of the computer program such that the computer program is effectively developed 을 포함하는 데이터 처리 시스템.Data processing system comprising a. 제5항에 있어서,The method of claim 5, 타겟 데이터 처리 유니트를 더 포함하고,Further comprising a target data processing unit, 상기 데이터 처리 시스템은 컴퓨터 프로그램을 형성하기 위해 상기 인스트루먼트되지 않은 모듈을 상기 인스트루먼트된 모듈과 조합하고, 그 이후에, 상기 컴퓨터 프로그램이 실행되고 실행 데이터가 발생되는 타겟 데이터 처리 유니트로 상기 컴퓨터 프로그램을 통신하는The data processing system combines the uninstrumented module with the instrumented module to form a computer program, and thereafter communicates the computer program to a target data processing unit where the computer program is executed and execution data is generated. doing 데이터 처리 시스템.Data processing system. 제5항에 있어서,The method of claim 5, 상기 타겟 데이터 처리 유니트는 내장형 마이크로콘트롤러인The target data processing unit is a built-in microcontroller 데이터 처리 시스템.Data processing system. 적어도 2개의 모듈을 가진 컴퓨터 프로그램을 분석하기 위한 데이터 처리 시스템에 있어서,A data processing system for analyzing a computer program having at least two modules, 제1 소스 컴퓨터, 제2 소스 컴퓨터 및 타겟 데이터 처리 유니트를 포함하고;A first source computer, a second source computer and a target data processing unit; 상기 제1 소스 컴퓨터는,The first source computer, 상기 컴퓨터 프로그램 내의 한 모듈을 인스트루먼트되지 않은 상태로 유지하면서, 하나의 인스트루먼트된 모듈을 생성하기 위해 상기 컴퓨터 프로그램 내의 하나의 모듈을 인스트루먼트하기 위한 제1 연산 모드;A first mode of operation for instrumenting one module in the computer program to create one instrumented module while keeping one module in the computer program uninstrumented; 상기 컴퓨터 프로그램을 생성하기 위해 상기 인스트루먼트된 모듈과 인스트루먼트되지 않은 모듈을 조합하기 위한 제2 연산 모드; 및A second mode of operation for combining the instrumented and uninstrumented modules to produce the computer program; And 상기 컴퓨터 프로그램을 타겟 데이터 처리 유니트로 통신하기 위한 제3 연산 모드A third operation mode for communicating the computer program to a target data processing unit 를 포함하는 다수의 연산 모드로 동작할 수 있으며,Can operate in a number of operation modes, including, 상기 타겟 데이터 처리 유니트는,The target data processing unit, 타겟 데이터 처리 유니트가 컴퓨터 프로그램 내의 인스트루먼트된 모듈을 실행할 때, 상기 컴퓨터 프로그램을 실행하고 실행 데이터를 발생하기 위한 제1 연산 모드; 및A first operation mode for executing the computer program and generating execution data when a target data processing unit executes an instrumented module in the computer program; And 상기 제2 소스 컴퓨터로 상기 실행 데이터를 통신하기 위한 제2 연산 모드A second mode of operation for communicating the execution data to the second source computer 를 포함하는 다수의 연산 모드로 동작할 수 있으며,Can operate in a number of operation modes, including, 상기 제2 소스 컴퓨터는 상기 컴퓨터 프로그램의 개발을 향상시키기 위해 상기 실행 데이터를 분석하기 위한 제1 연산 모드로 동작할 수 있는The second source computer may operate in a first mode of operation for analyzing the execution data to enhance development of the computer program. 데이터 처리 시스템.Data processing system. 제8항에 있어서,The method of claim 8, 상기 제1 소스 컴퓨터가 상기 제2 소스 컴퓨터인The first source computer is the second source computer 데이터 처리 시스템.Data processing system. 내장형 타겟 데이터 처리 유니트 상에서 실행되도록 설계된 컴퓨터 프로그램을 분석하기 위한 방법에 있어서,A method for analyzing a computer program designed to run on an embedded target data processing unit, the method comprising: 소스 컴퓨터 시스템 상에서, 인스트루먼트된 모듈을 생성하기 위해 상기 컴퓨터 프로그램의 소스 코드 모듈을 인스트루먼트하는 단계;On a source computer system, instrumenting a source code module of the computer program to create an instrumented module; 상기 소스 컴퓨터 시스템 상에서, 상기 인스트루먼트된 모듈과 다른 인스트루먼트되지 않은 모듈을 컴파일하는 단계;Compiling, on the source computer system, an uninstrumented module that is different from the instrumented module; 상기 소스 컴퓨터 시스템 상에서, 내장형 타겟 데이터 처리 유니트에서 실행될 수 있는 컴퓨터 프로그램을 형성하기 위해 상기 인스트루먼트된 모듈과 상기 인스트루먼트되지 않은 모듈을 조합하는 단계;Combining, on the source computer system, the instrumented module and the uninstrumented module to form a computer program that can be executed in an embedded target data processing unit; 상기 컴퓨터 프로그램을 상기 소스 컴퓨터 시스템으로부터 내장형 타겟 데이터 처리 유니트로 통신하는 단계;Communicating the computer program from the source computer system to an embedded target data processing unit; 상기 내장형 타겟 데이터 처리 유니트 상에서, 상기 컴퓨터 프로그램을 실행하는 단계;Executing the computer program on the embedded target data processing unit; 상기 내장형 타겟 데이터 처리 유니트 상에서, 상기 인스트루먼트된 모듈이 실행될 때 실행 데이터를 발생하는 단계;Generating execution data on the embedded target data processing unit when the instrumented module is executed; 상기 실행 데이터를 상기 내장형 타겟 데이터 처리 유니트로부터 상기 소스 컴퓨터 시스템으로 통신하는 단계; 및Communicating the execution data from the embedded target data processing unit to the source computer system; And 상기 소스 컴퓨터 시스템 상에서, 상기 컴퓨터 프로그램의 실행 및 성능 특성을 판단하기 위해 상기 실행 데이터를 분석하는 단계Analyzing, on the source computer system, the execution data to determine performance and performance characteristics of the computer program. 를 포함하는 컴퓨터 프로그램 분석 방법.Computer program analysis method comprising a. 멀티-태스킹 컴퓨터 프로그램의 성능 및 실행 특성을 판단하기 위해 다수의 모듈을 가진 다수의 태스크를 포함하는 멀티-태스킹 컴퓨터 프로그램으로부터 실행 데이터를 발생하기 위한 방법에 있어서,A method for generating execution data from a multi-tasking computer program comprising a plurality of tasks having a plurality of modules for determining performance and execution characteristics of the multi-tasking computer program, the method comprising: 제1 인스트루먼트된 모듈을 형성하기 위해 제1 태스크 내의 제1 모듈을 인스트루먼트하고, 제2 인스트루먼트된 모듈을 형성하기 위해 제2 태스크 내의 제2 모듈을 인스트루먼트하는 단계 - 여기서, 상기 다수의 모듈 중 다른 모듈은 인스트루먼트되지 모듈임 - ;Instrumenting a first module in a first task to form a first instrumented module and instrumenting a second module in a second task to form a second instrumented module, wherein another module of the plurality of modules Is an instrumented module-; 멀티-태스킹 컴퓨터 프로그램을 형성하기 위해 상기 제1 및 제2 인스트루먼트된 모듈을 상기 인스트루먼트되지 않은 모듈들과 조합하는 단계;Combining the first and second instrumented modules with the uninstrumented modules to form a multi-tasking computer program; 상기 제1 태스크를 제1 메모리 버퍼와 연관시키고, 상기 제2 태스크를 제2 메모리 버퍼와 연관시키는 단계;Associating the first task with a first memory buffer and associating the second task with a second memory buffer; 상기 제1 및 제2 인스트루먼트된 모듈을 포함하여 상기 멀티-태스킹 컴퓨터 프로그램을 데이터 처리 시스템 상에서 실행하는 단계 - 여기서, 상기 제1 및 제2 인스트루먼트된 모듈은 실행될 때 실행 데이터를 발생함 - ; 및Executing the multi-tasking computer program on a data processing system, including the first and second instrumented modules, wherein the first and second instrumented modules generate execution data when executed; And 상기 제1 인스트루먼트된 모듈에 의해 발생된 실행 데이터를 상기 제1 메모리 버퍼에 저장하고, 상기 제2 인스트루먼트된 모듈에 의해 발생된 실행 데이터를 상기 제2 메모리 버퍼에 저장하는 단계 - 여기서, 상기 제1 메모리 버퍼 및 제2 메모리 버퍼 내의 실행 데이터는 상기 멀티-태스킹 컴퓨터 프로그램의 성능 및 실행 특성을 반영함 -Storing execution data generated by the first instrumented module in the first memory buffer and storing execution data generated by the second instrumented module in the second memory buffer, wherein the first Execution data in the memory buffer and the second memory buffer reflect the performance and execution characteristics of the multi-tasking computer program. 를 포함하는 실행 데이터 발생 방법.Execution data generation method comprising a. 제11항에 있어서,The method of claim 11, 상기 멀티-태스킹 컴퓨터 프로그램이 실행을 완료한 후에, 상기 제1 메모리 버퍼와 상기 제2 메모리 버퍼의 내용을 비휘발성 기억장치에 저장하는 단계After the multi-tasking computer program completes execution, storing the contents of the first memory buffer and the second memory buffer in a nonvolatile memory device. 를 더 포함하는 실행 데이터 발생 방법.Execution data generation method further comprising. 제11항에 있어서,The method of claim 11, 상기 제1 인스트루먼트된 모듈의 후속 실행에 응답하여,In response to subsequent execution of the first instrumented module, 상기 제1 인스트루먼트된 모듈과 관련된 카운터를 증가시키는 단계; 및Incrementing a counter associated with the first instrumented module; And 상기 제1 인스트루먼트된 모듈의 후속 실행 이전에 저장된 실행 데이터와 중복되는 정보가 없는 추가적인 실행 데이터를 저장하는 단계Storing additional execution data without information that overlaps with the stored execution data prior to subsequent execution of the first instrumented module 를 더 포함하는 실행 데이터 발생 방법.Execution data generation method further comprising. 다수의 모듈을 가진 다수의 태스크를 포함하는 멀티-태스킹 컴퓨터 프로그램으로부터 실행 데이터를 발생하기 위한 데이터 처리 시스템에 있어서,A data processing system for generating execution data from a multi-tasking computer program comprising a plurality of tasks having a plurality of modules, the method comprising: 데이터 처리 시스템;Data processing systems; 제1 태스크내의 제1 인스트루먼트된 모듈과 제2 태스크내의 제2 인스트루먼트된 모듈을 포함하는 멀티-태스킹 컴퓨터 프로그램 - 여기서, 상기 다수의 모듈 중 다른 모듈은 인스트루먼트되지 않은 모듈이고, 상기 데이터 처리 시스템이 제1 및 제2 인스트루먼트된 모듈을 포함하는 멀티-태스킹 컴퓨터 프로그램을 실행할 때, 상기 제1 및 제2 인스트루먼트된 모듈은 실행 데이터를 발생함 - ;A multi-tasking computer program comprising a first instrumented module in a first task and a second instrumented module in a second task, wherein another one of the plurality of modules is an uninstrumented module, When executing a multi-tasking computer program comprising first and second instrumented modules, the first and second instrumented modules generate execution data; 제1 태스크를 제1 메모리 버퍼와 연관시키고, 제2 태스크를 제2 메모리 버퍼와 연관시키기 위한 수단; 및Means for associating a first task with a first memory buffer and associating a second task with a second memory buffer; And 상기 제1 인스트루먼트된 모듈에 의해 발생된 실행 데이터를 상기 제1 메모리 버퍼에 저장하고, 상기 제2 인스트루먼트된 모듈에 의해 발생된 실행 데이터를 제2 메모리 버퍼에 저장하기 위한 수단 - 여기서, 상기 제1 메모리 버퍼 및 제2 메모리 버퍼 내의 실행 데이터는 상기 멀티-태스킹 컴퓨터 프로그램의 성능 및 실행 특성을 반영함 -Means for storing execution data generated by the first instrumented module in the first memory buffer and storing execution data generated by the second instrumented module in a second memory buffer, wherein the first Execution data in the memory buffer and the second memory buffer reflect the performance and execution characteristics of the multi-tasking computer program. 을 포함하는 데이터 처리 시스템.Data processing system comprising a. 제14항에 있어서,The method of claim 14, 상기 멀티-태스킹 컴퓨터 프로그램이 실행을 완료한 이후에, 상기 제1 메모리 버퍼와 상기 제2 메모리 버퍼의 내용을 비휘발성 기억장치에 저장하기 위한 수단Means for storing contents of the first memory buffer and the second memory buffer in a nonvolatile memory after the multi-tasking computer program has finished executing 을 더 포함하는 데이터 처리 시스템.Data processing system further comprising. 제14항에 있어서,The method of claim 14, 상기 제1 인스트루먼트된 모듈의 후속 실행에 응답하여,In response to subsequent execution of the first instrumented module, 상기 제1 인스트루먼트된 모듈과 관련된 카운터를 증가시키기 위한 수단; 및Means for incrementing a counter associated with the first instrumented module; And 상기 제1 인스트루먼트된 모듈의 후속 실행 이전에 저장된 실행 데이터와 중복되는 정보가 없는 추가적인 실행 데이터를 저장하기 위한 수단Means for storing additional execution data without information that overlaps with the stored execution data prior to subsequent execution of the first instrumented module 을 더 포함하는 데이터 처리 시스템.Data processing system further comprising.
KR1019970016363A 1996-04-23 1997-04-23 Method and apparatus for measuring code coverage of embedded software on a traget hardware platform KR100303188B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US63644896A 1996-04-23 1996-04-23
US08/636,448 1996-04-23

Publications (2)

Publication Number Publication Date
KR970071253A KR970071253A (en) 1997-11-07
KR100303188B1 true KR100303188B1 (en) 2001-09-28

Family

ID=37529723

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970016363A KR100303188B1 (en) 1996-04-23 1997-04-23 Method and apparatus for measuring code coverage of embedded software on a traget hardware platform

Country Status (1)

Country Link
KR (1) KR100303188B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100433549B1 (en) * 2002-05-11 2004-05-31 삼성전자주식회사 Method and apparatus for analyzing software

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100433549B1 (en) * 2002-05-11 2004-05-31 삼성전자주식회사 Method and apparatus for analyzing software

Also Published As

Publication number Publication date
KR970071253A (en) 1997-11-07

Similar Documents

Publication Publication Date Title
Nieuwejaar et al. File-access characteristics of parallel scientific workloads
US7093234B2 (en) Dynamic CPU usage profiling and function call tracing
Snodgrass A relational approach to monitoring complex systems
US5528753A (en) System and method for enabling stripped object software monitoring in a computer system
US5347647A (en) Method of predicting the performance of an emulated computer system
US7555549B1 (en) Clustered computing model and display
EP0539827A2 (en) A dynamic instruction modifying controller
JPH0823837B2 (en) Sampling performance analysis method and device
US6467082B1 (en) Methods and apparatus for simulating external linkage points and control transfers in source translation systems
JPH0844590A (en) Apparatus and method for selection test of software system
Poursepanj The PowerPC; performance modeling methodology.
KR100303188B1 (en) Method and apparatus for measuring code coverage of embedded software on a traget hardware platform
Casmira et al. Tracing and characterization of Windows NT-based system workloads
Sosič A procedural interface for program directing
Mathieson et al. A dynamic-trace-driven simulator for evaluating parallelism
Anderson An overview of Motorola's PowerPC simulator family.
Kvasnicka et al. Developing architecture adaptive algorithms using simulation with MISS-PVM for performance prediction
JPH05158740A (en) Computer performance evaluating device
Rose et al. N. mPc: a retrospective
Fernandez et al. Ddbx-lpp: A dynamic software tool for debugging asynchronous distributed algorithms on loosely coupled parallel processors
Godunov et al. Configurable Test System for RTOS
Ewing et al. Akaroa 2.5 User's Manual
Dolotta et al. The LEAP load and test driver
Grabner et al. Debugging of concurrent processes
Ezolt Optimizing Linux Performance: A Hands-on Guide to Linux Performance Tools

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: 20040618

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee