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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Abstract
Description
본 발명은 소프트웨어 개발 분야에 관한 것으로, 특히 컴퓨터 프로그램의 실행을 해석하기 위한 방법 및 장치에 관한 것이다. 더욱이, 본 발명은 컴퓨터 프로그램의 선택된 부분을 테스트하는 브랜치 커버리지를 담당하도록 하는 데이터를 발생시키기 위한 방법 및 장치에 관한 것이다.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
후술된 바와 같이, 시스템 유니트(12)는 PC 키보드(16) 또는 마우스(18)와 같은 입력장치 또는 로컬(local) 네트워킹 인터페이스에 응답한다. 더욱이, 플로피 디스켓 드라이브(22), 디스플레이(14), 프린터(20) 및 로컬 네트워크 통신 시스템과 같은 입/출력(I/O)장치는 공지의 방법으로 시스템 유니트(12)에 열결된다. 물론, 통상의 지식을 가진자는 통상의 구성요소들이 상호연결을 위해 시스템유니트(12)와 연결될수 있다는 것을 알수 있을 것이다. 본 발명에 따른면, 데이터 처리 시스템(10)은 RAM, ROM 및 다수의 I/O장치와 상호 연결된 시스템 프로세서를 포함한다.As described below, the
통상의 용도에서, 데이터 처리 시스템(10)은 서버 또는 단일 사용자로서의 소구룹 사용자에게 독립적인 계산력을 주도록 디자인될 수 있으며, 개인 또는 소규모 사업자의 구매를 위해 비싸지 않게 값이 설정된다. 동작에 있어서, 시스템 프로세서는 마이크로소프트사의 윈도우95, IBM사의 OS/2 운영체계 또는 애플 컴퓨터사의 Mac OS 또는 DOS와 같은 운영체계하에서 기능을 수행한다. OS/2는 IBM사의 등록상표이고, "Mac OS"는 애플 컴퓨터사의 등록상표이다.In normal use,
데이터 처리 시스템(10)은 타겟 데이터 처리 유니트(13)과 연결된다. 데이터 처리 시스템(10)은 입/출력 포트를 통해 데이터를 보내고 타겟 데이터 처리 유니트(13)으로부터 데이타를 수신할 수 있다. 타겟 데이터 처리 유니트(13)는 많은 구서요소들중 어느 하나로 구성될 수 있다. 예를들어, 타겟 데이터 처리 유니트(13)는 완벽하게 개발되어 있는 또 하나의 데이터 처리 시스템일수 있고, 또는 대용량 데이터 처리 시스템의 시스템 버스에 연결된 콘트롤러 카드와 같은 대용량 데이터 처리 시스템의 일부일 수 있다. 통상적으로, 타겟 데이터 처리 유니트(13)는 테스트되고 있는 새로운 장치이다. 이러한 경우에 있어서, 데이터 처리 시스템(10)은 자극을 타겟 데이터 처리 유니트(13)에 보내고, 타겟 데이터 처리 유니트(13)로부터의 성능(performance) 및 디버깅 데이터를 수신할 수 있다.The
상기 구조를 본 발명과 관련하여 설명하기 전에, 데이터 처리 시스템(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
도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
다른 버퍼(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
포트 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
본 발명에 따른 수행가능한 컴퓨터 프로그램의 구성을 도시한 데이타 흐름도가 도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
계속하여, 수행가능한 컴퓨터 프로그램이 타겟 데이터 처리 유니트 상에서 수행된다(단계 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.
상기와 같이, 계수 필드(456)는 실행되었던 인스트루먼테이션의 주어진 부분의 횟수를 저장한다. 인스트루먼테이션 코드의 주어진 부분이 한번 이상 실행되었다면, 다른 프레임은 테이블(450)에 부가될 필요가 없다. 대신에, 인스트루먼테이션 코드의 주어진 부분에 의해 이전에 발생된 프레임은 증가된 자신의 계수 필드를 가질 수 있다. 이런 방식에서 기억 공간은 보존될 수 있다.As above,
듀플리케이트 트레이스가 인스트루먼테이션 코드의 주어진 부분에 의해 발생되는지 판단하는 효과적인 방법은 다음과 같은 해쉬값을 발생시키는 것이다.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
여기서, 데이터[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
최종적으로, 인스트루먼트된 코드가 실행되었을때 발생된 데이터가 분석된다(단계 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
타겟 데이터 처리 유니트(508)에서 실행될 수 있는 프로그램을 발생시킨후에, 데이터 처리 시스템(502)는 실행할 수 있는 프로그램을 타겟 데이터 처리 유니트(508)로 전송한다.After generating a program that can be executed in the target
도5에 도시된 것과 같이, 타겟 데이터 처리 유니트(508)는 디스크 드라이브의 어레이를 위한 제어기이다. 그러나, 타겟 데이터 처리 유니트(508)는 원격 통화 또는 다른 컴퓨팅 기술에 사용되는 다수의 타겟 데이터 처리 유니트중 하나의 형태를 취할 수 있다.As shown in Figure 5, the target
일단 실행할 수 있는 컴퓨터 프로그램이 타겟 데이터 처리 유니트(508)로 전송되었으면, 프로그램이 실행된다. 실행동안에 데이터 처리 시스템(506)은 타겟 데이터 처리 유니트(508)로 일련의 테스트 자극을 전송한다. 이들 테스트 자극은 정상적으로 동작되지 않는 코드 부분을 실행하도록 설계될 수 있고, 또는 테스트 자극은 수행되는 프로그램내에 특정 코드 부분의 성능을 테스트할 수 있다.Once the executable computer program has been transferred to the target
타겟 데이터 처리 유니트(508)상에서 수행되는 프로그램내의 인스트루먼트된 모듈이 실행될때, 이 모듈은 프로그램의 성능 및 커버리지를 반영하는 실행 데이터를 발생한다. 예를 들어, 모듈내의 인스트루먼테이션 코드는 어떤 변수값을 보고하고, 또는 특정 브랜치 코드가 실행되었음을 알릴 것이다.When an instrumented module in a program executed on the target
실시예에서, 초기 실행이 될 경우 인스트루멘테이션 코드는 데이터의 초기 세트를 저장할 것이다. 초기 실행 이후, 인스트루멘테이션 코드는 다음 실행에서 소량의 데이터를 발생시킬 것이다. 이러한 방법의 동작으로 인스트루멘테이션 코드는 이전에 발생된 데이터의 이중적인 데이터의 발생을 방지할 수 있다. 이것은 타겟 데이터 처리 장치의 메모리 자원을 저장하는데 도움이 된다. 또한 일정한 인스트루멘테이션 코드가 실행될 경우 계수기를 증분시킬수 있다. 계수기의 값은 시험된 프로그램의 특별한 지로가 실행된 횟수를 나타낸다.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
타겟 데이터 처리 장치(508)에서 실행된 프로그램이 종료된 후, 타겟 데이터 처리 장치(508)의 메모리 버퍼에서 저장되는 실행 데이터는 데이터 처리 시스템(504)에 전달된다. 실행 데이터가 데이터 처리 시스템(504)내에 위치할 경우, 소프트웨어 개발 프로그램은 지시 지로와 결정 경로 적용 방법을 이용한 시험 프로그램의 종료를 결정하기 위해 데이터를 평가할 수 있다. 이러한 분석 결과를 연구하여 프로그래머는 더 효율적으로 프로그램을 최적화하고 개발할 수 있다.After the program executed in the target
도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
본 발명에 따르면, 프로그래머는 인스트루멘테이션되는 다중 태스크 컴퓨터 프로그램(612)에 포함되는 모듈을 선택한다. 모듈(602, 604, 614)은 인스트루멘테이션 코드를 포함하고 실행시 실행 데이터를 발생시킨다.According to the present invention, the programmer selects the modules included in the instrumented
인스트루멘테이션 코드를 포함하는 모듈이 실행될 경우 발생되는 데이터를 저장하기 위해 버퍼(610, 618)를 구비한다. 버퍼(610, 618)는 큰 단일 버퍼를 포함하거나 서로 연결되는 일련의 작은 버퍼를 포함한다. 본 발명에 따라서, 분리 버퍼는 인스트루멘테이션된 코드를 포함하는 모듈의 각 태스크를 위해 구비된다. 단지 단일 버퍼가 인스트루멘테이션된 코드를 포함하는 모듈을 가진 시스템에 구비될 경우에 각 태스크 내에 인스트루멘테이션 코드는 동일 버퍼에 위치한 다른 태스크의 실행 데이터를 계속해서 겹쳐 쓰고 간섭한다. 인스트루멘테이션 코드를 포함하는 각 태스크를 위해 분리 버퍼를 구비함으로써, 한 태스크의 한 모듈에 의해 발생되는 데이터가 또다른 태스크의 또다른 모듈에 의해 발생되는 데이터를 간섭할 위험은 없을 것이다.
이렇게 인스트루먼트된 모듈(602, 604)에 의해 발생된 실행 데이터는 버퍼(610)에 저장되며, 반면 인스트루멘테이션된 모듈(614)은 버퍼(618)에 그것의 실행 데이터를 저장한다. 결국, 태스크(624)를 인스트루멘테이션된 모듈이 존재하지 않기 때문에, 태스크(624)와 관련된 버퍼는 존재하지 않는다.Execution data generated by such instrumented
도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
초기에 태스크(700)가 실행될 것이다. 다음 인스트루멘테이션 코드(702)가 실행될 것이다. 이 시점에서 처리의 흐름은 루틴(706)으로 전환할 것이다. 직접적으로 루틴(706)에 입력되자마자 코드는 타겟 데이터 처리장치가 인터럽트 역할을 할 수 없도록 실행된다. 이 코드는 Int-Lock으로 지칭된다. 인터럽트 역할을 방지함으로써 타겟 데이터 처리장치는 루틴(706)을 떠나지 않고 인스트루멘테이션 코드에 의해 지정된 데로 데이터의 로깅을 완료시킬 수 있게 보장된다. 태스크(700)와 관련된 버퍼에 저장된 실행 데이터는 적절히 명령될 수 있게 보장된다.Initially
루틴(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
인스트루멘테이션 코드(702)를 실행시킨후, 태스크(700)는 실제 인스트루멘테이션 코드(704)를 실행할 것이다. 인스트루멘테이션 코드(702)의 실행과 동일한 방법으로, 인스트루멘테이션 코드(704)의 실행은 제어를 태스크(700)에서 루틴(706)으로 전환시킬 것이다. 다시, 인스트루멘테이션 코드(702)의 경우 처럼, 루틴(706)은 인터럽트의 역할 수행을 불가능하게 하며, 인스트루멘테이션(704)에 의해 태스크(700)와 관련된 버퍼에 지정한데로 데이터를 로그시킨다. 그리고나서 인터럽트 역할 수행을 가능하게한다. 이 시점에서 루틴(706)은 제어를태스크(700)로 전환시킨다.After executing the
실제로, 태스크(700)는 종결될 것이다. 이 시점에서 태스크(710)는 초기화된다. 태스크(710)는 태스크(700)와 비슷한 방법으로 실행될 것이다. 인스트루멘테이션 코드(712, 714)는 태스크(710)와 관련된 버퍼에 데이터를 로그시키기 위해 루틴(716)을 요청한다. 도7에서 나타난 예에서 태스크(710)가 실행을 완료시킨후 태스크(700)는 다시 실행될 것이다. 태스크(700)는 상기한 것과 같이 실행될 것이고, 몇몇 지점에서 태스크(720)로 실행을 스위치할 것이다. 태스크(720)는 태스크(700, 710)과 아주 유사한 방식으로 실행될 것이다. 인스트루먼테이션 코드(722, 724)는 태스크(720)과 연관된 버퍼에 데이터를 등록하기 위해 루틴(726)을 호출할 것이다.In practice,
본 발명이 완전한 기능 세트의 데이터 처리 시스템의 내용에 설명되는 동안, 종래 기술에 익숙한 사람들은 본 발명의 장치가 다양한 형태로 명령어 컴퓨터 판독가능 매개체의 형태로 분배될 수 있으며, 본 발명은 분배를 실제적으로 실행하기 위해 사용되는 특정 형태의 신호 관계 매체를 고려하지 않고 동등하게 적용한다는 것을 인식할 것이다. 컴퓨터 판독가능 매체의 예는 플로피 디스트(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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100433549B1 (en) * | 2002-05-11 | 2004-05-31 | 삼성전자주식회사 | Method and apparatus for analyzing software |
-
1997
- 1997-04-23 KR KR1019970016363A patent/KR100303188B1/en not_active IP Right Cessation
Cited By (1)
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 |