KR20060045568A - 프로그램 계측 동안의 프로브 최적화 방법 및 시스템 - Google Patents

프로그램 계측 동안의 프로브 최적화 방법 및 시스템 Download PDF

Info

Publication number
KR20060045568A
KR20060045568A KR1020050028965A KR20050028965A KR20060045568A KR 20060045568 A KR20060045568 A KR 20060045568A KR 1020050028965 A KR1020050028965 A KR 1020050028965A KR 20050028965 A KR20050028965 A KR 20050028965A KR 20060045568 A KR20060045568 A KR 20060045568A
Authority
KR
South Korea
Prior art keywords
program
probe
map
entry
arc
Prior art date
Application number
KR1020050028965A
Other languages
English (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 KR20060045568A publication Critical patent/KR20060045568A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

프로브 삽입을 최적화하여 프로그램을 계측하는 방법 및 시스템이 제공된다. 계측 코드 내로의 프로브 삽입 수는 최적 프로브 삽입 포인트를 제공함으로써 감소된다. 코드의 제어 플로우는 아크 및 블럭 관계와 함께 분석되어, 포스트 도미네이터 트리를 만든다. 최적화 맵은 최적의 프로브 삽입 포인트를 제공하는 포스트 도미네이터 트리로부터 생성된다. 프로브가 삽입되고 코드 및 프로브를 나태내는 바이너리를 실행하여 데이터가 수집되면, 데이터가 최적화 맵과, 아크 및 블럭 관계에 오버레이 되어 코드 커버리지 데이터가 제공될 수 있다.
프로브 삽입, 최적화, 프로그램 계측, 코드 커버리지, 도미네이터

Description

프로그램 계측 동안의 프로브 최적화 방법 및 시스템{METHOD AND SYSTEM FOR PROBE OPTIMIZATION WHILE INSTRUMENTING A PROGRAM}
도 1은 본 발명의 일 실시예에서 사용될 수 있는 예시적 컴퓨팅 디바이스이다.
도 2는 본 발명에 따른 예시적 제어 플로우 그래프 및 아크 대 블럭 맵이다.
도 3은 본 발명에 따른 도 2의 제어 플로우 그래프 및 아크 대 블럭 맵에 대응하는 포스트 도미네이터 트리 및 최적화 맵이다.
도 4는 본 발명에 따라 프로브를 프로그램 내에 최적으로 삽입하여 프로그램을 계측하는 프로세스에 대한 예시적 동작 흐름도이다.
도 5는 본 발명에 따른 최적화 맵을 구축하는 프로세스에 대한 예시적 동작 흐름도이다.
<도면의 주요부분에 대한 부호의 설명>
100: 컴퓨팅 디바이스 102: 프로세싱부
104: 시스템 메모리 106: 프로그램 모듈
107: 프로그램 데이터 112: 입력 디바이스
114: 출력 디바이스 116: 통신 접속
118: 다른 컴퓨팅 디바이스 210: 제어 플로우 그래프
220: 아크 대 블럭 맵
커버리지 분석(coverage analysis)은 일관된 고품질의 검증 결과를 보장하기 위해 많은 소프트웨어 개발자에 의해 채택된 방법이다. 코드 커버리지 분석툴(code coverage analysis tools)은 특정 프로그램에 대한 커버리지 분석을 하기 위해 설치될 수 있다. 커버리지 분석툴은 커버리지 정보를 취득하기 위한 범위 및 방법에 있어서 다양할 수 있다.
본래, 커버리지 분석은 디자인의 테스트 제품군(a desing's test suit)을 객관적 메트릭스(metrics)의 세트와 비교하여 평가하는 것에 기초한다. 디자이너들은 그들의 디자인 단계, 커버리지를 평가하는 비용 및 특정 메트릭스가 유용하다는 디자인 그룹의 경험에 기초하여 메트릭스를 선택할 것이다. 코드 커버리지 메트릭스는 자동화된 툴을 이용하여 비교적 저렴한 비용으로 구현될 수 있고 신속한 결과를 제공하기 때문에 대개는 제일 먼저 이용된다.
코드 커버리지 계측의 한 방법은 프로그램의 코드에 대한 논리 플로우(logical flow) 내의 각 블럭 또는 아크(block and arc)에 "프로브(probes)"를 위치시키는 단계를 포함한다. "프로브"는 코드에 관한 데이터를 기록하는 인스트럭션의 세트를 지칭한다. 예를 들어, 프로브는 분석을 위해 프로그램의 특정 부분의 사용 데이터(usage data)를 보고할 수 있다. 프로브를 프로그램 내에 두는 것은 강력한 프로그램 계측 방법을 제공한다.
사용자가 부가적인 데이터를 수집하기 위해 코드를 증대시킬 필요가 있는 소정의 경우에는 성능이 중요하다. 계측/프로브에 의해 부과되는 오버헤드(overhead)는 코드 커버리지 분석의 이득보다 클 수 있다. 프로브 기반 분석의 비용대 성능비는 제공된 커버리지 데이터의 레벨로 인해 중요할 수 있다.
본 발명이 이루고자 하는 목적은 비용 대 성능비를 개선함과 동시에 프로브 기반 분석에 의해 제공되는 것에 필적할 만한 레벨의 데이터를 제공하는 프로그램 계측 방법을 제공하는 것이다.
본 발명은 프로브 삽입(probe insertion)을 최적화(optimizing)하여 프로그램을 계측하는 방법 및 시스템을 제공한다. 프로브 삽입을 최적화하는 것은 코드 커버리지 데이터 수집 오버헤드(code coverage data collection overhead)를 감소시켜 계측된 코드의 성능을 증가시킨다. 코드의 제어 플로우는 "포스트 도미네이터 트리(post-dominator tree)"를 작성하기 위해 아크 및 블럭 관계에 따라 분석된다. 포스트 도미네이터란 제1 코드 섹션 및 제2 코드 섹션 사이의 관계를 의미한다. 제2 코드 섹션이 실행될 수 있기 전에 제1 코드 섹션이 실행되어야 하는 경우에는, 제2 코드 섹션이 제1 코드 섹션의 "포스트 도미네이터"로서 참조된다. 따라서, 동일 예에 있어, 제1 코드 섹션은 제2 코드 섹션의 "도미네이터(dominator)"로 지칭된다.
산출된 포스트 도미네이터 트리를 이용하여, 최적화 맵을 생성함으로써 코드의 삽입 포인트가 산출될 수 있다. 최적화 맵은, 코드 내에 삽입되는 프로브의 수를 최소화시킴과 동시에, 풀 코드 커버리지 정보를 얻기 위한 프로브의 삽입 포인트를 제공한다. 일단 프로브가 삽입되면, 프로브 출력 데이터를 얻기 위해 코드의 바이너리가 실행될 수 있다. 그런 다음, 프로브 출력 데이터는, 프로브 출력 데이터를 프로브 위치에 연관시키기 위해 최적화 맵 상에 오버레이될 수 있다. 프로브 출력 데이터를 최적화 맵에 오버레이시키는 것은, 코드 내 각 프로브의 연관된 아크 및 블럭으로 프로브 출력 데이터를 분석하여, 코드 커버리지 데이터를 생성시킨다.
이하, 본 발명의 일부를 형성하며, 본 발명을 실시하기 위한 특정 예시적 실시예를 도해로 나타낸 첨부 도면을 참조하여 본 발명에 대해 상세히 설명한다. 그러나, 본 발명은 많은 다양안 형태로 구현될 수 있으며, 본 명세서에 언급되는 실시예에 한정되는 것으로 해석되어서는 안 될 것이다. 오히려, 본 실시예들은 본 발명의 기술 분야에 종사하는 자에게 본 개시가 전체적이고 완전하도록 하며, 본 발명의 범주를 온전하게 전달하기 위해 제공된다. 특히, 본 발명은 방법 및 디바이스로 구현될 수 있다. 따라서, 본 발명은 전부가 하드웨어이거나 전부가 소프트웨어로 구현된 형태 또는 소프트웨어 및 하드웨어 특징을 조합하여 구현된 형태를 취할 수 있다. 따라서, 후술할 상세한 설명이 본 발명을 한정하는 의미로 받아들여져서는 안될 것이다.
예시적 동작 환경
도 1은 본 발명을 실시하기 위한 시스템에 포함될 수 있는 예시적 컴퓨팅 디바이스(computing device)(100)를 나타낸다. 컴퓨팅 디바이스(100)는 본 발명에 적용될 수 있는 일반적인 동작 환경을 나타낸다. 매우 기본적인 구성으로서, 컴퓨팅 디바이스(100)는 전형적으로 적어도 하나의 프로세싱부(processing unit)(102) 및 시스템 메모리(system memory)(104)를 포함한다. 프로세싱부(102)는 현재의 물리적 프로세서(physical processors), 디자인 상 함께 동작하는 다중 프로세서(multiple processors), 가상 프로세서(virtual procesor) 및 바이너리 실행가능 인스트럭션(binary executable instructions)을 해석할 수 있는 다른 디바이스 또는 소프트웨어 프로그램을 포함한다. 컴퓨팅 디바이스의 정확한 구성 및 유형에 따라, 시스템 메모리(104)는 휘발성(예를 들어, RAM), 비휘발성(예를 들어, ROM, 플래시 메모리 등) 또는 이들 둘에 대한 소정의 조합을 포함할 수 있다. 전형적으로, 시스템 메모리(104)는 운영 체제(105) 및 하나 이상의 프로그램 모듈(106)을 포함하며, 프로그램 데이터(107)를 포함할 수도 있다. 이러한 기본적 구성은 전술한 컴포넌트들에 의해 도 1에 점선(108) 내에 도시되어 있다.
또한, 컴퓨팅 디바이스(100)는 부가적인 특징 또는 기능을 구비할 수 있다. 예를 들어, 컴퓨팅 디바이스(100)는, 가령 마그네틱 디스크, 광 디스크 또는 테이프와 같이 부가적인 (분리형 및/또는 비분리형) 데이터 스토리지 디바이스를 포함할 수 있다. 그러한 부가적인 스토리지는 도 1에서 분리형 스토리지(109) 및 비분리형 스토리지(110)로 도시되어 있다. 컴퓨터 스토리지 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 소정의 정보에 대한 저장 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 시스템 메모리(104), 분리형 스토리지(109) 및 비분리형 스토리지(110)는 모두 컴퓨터 스토리지 매체의 예들이다. 컴퓨터 스토리지 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술이거나, CD-ROM, DVD(digital versatile disks) 또는 다른 광 스토리지이거나, 마그네틱 카세트, 마그네틱 테이프, 마그네틱 디스크 스토리지 또는 다른 마그네틱 스토리지 디바이스이거나, 또는 원하는 정보를 저장하는데 사용되며 컴퓨팅 디바이스(100)에 의해 액세스될 수 있는 소정의 다른 매체를 포함하며, 이에 한정되지 않는다. 그러한 소정의 컴퓨터 스토리지 매체는 컴퓨팅 디바이스(100)의 일부일 수 있다. 또한, 컴퓨팅 디바이스(100)는 키보드, 마우스, 펜, 스틸러스(stylus), 음성 입력 디바이스, 터치 입력 디바이스 등과 같은 입력 디바이스(112)도 구비할 수 있다. 또한, 디스플레이, 스피커, 프린터 등과 같은 출력 디바이스(114)도 포함될 수 있다. 이러한 모든 디아이스들은 본 기술 분야에서 공지되어 있으므로 여기서는 더 이상 상세히 설명하지 않기로 한다.
또한, 컴퓨팅 디바이스(100)는, 디바이스가 가령, 네트워크를 통해, 다른 컴퓨팅 디바이스(118)와 통신할 수 있도록 하는 통신 접속(communications connection(s))(116)을 포함할 수 있다. 통신 접속(116)은 통신 매체의 예이다. 전형적으로, 통신 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 캐리어파(carrier wave)와 같이 변조된 데이터 신호(modulated data signal) 또는 다른 전송 메카니즘으로 구현하며, 소정의 정보 전 달 매체(information delivery media)를 포함한다. "변조 데이터 신호"라는 용어는 정보를 신호로 인코딩하는 방식으로 설정 또는 변경된 하나 이상의 특성을 가지는 신호를 의미한다.
한정하는 것이 아닌 예로써, 통신 매체는 유선 네트워크 또는 다이렉트 유선 접속(direct-wired connection)과 같은 유선 매체와, 음파, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 여기서 사용되는 컴퓨터 판독가능 매체라는 용어는 스토리지 매체 및 통신 매체를 포함한다.
프로브 최적화
전반적으로, 본 발명은, 프로그램을 계측할 때 프로브 삽입을 최적화하는 방법 및 시스템에 관한 것이다. 프로브는 코드 커버리지에 관한 데이터와 같은 데이터를 코드로부터 가져오기 위해 프로그램 내에 삽입되는 인스트럭션의 세트를 지칭한다. 종래의 프로그램 계측 방법은 제어 플로우 그래프의 각 아크에 대해 프로브를 삽입하는 단계를 포함하였다. 그러나, 프로브는 길이가 특정된 비트수이며 다수의 프로브를 프로그램에 부가하는 것은 프로그램을 계측하는 동안 오버헤드를 증가시킨다. 삽입된 프로브로 프로그램 바이너리가 실행되는 경우에는, 프로브가 바이너리의 실행 사이클에 상당한 시간을 부가할 수 있다. 본 발명은 프로브 삽입 포인트를 최적화하여, 프로그램 내에 삽입되는 프로브의 수를 줄이며 프로그램을 계측하는 동안 오버헤드를 줄인다. 몇몇 프로그램 테스트군(program test suite)을 실행하는 데에는 수 주일이 걸리기 때문에, 본 발명에 의해 제공된 오버헤드의 감소는 상당한 시간을 절약을 제공할 수 있다.
도 2는 본 발명의 실시예에 따른 예시적인 제어 플로우 그래프 및 아크 대 블럭 맵을 나타낸다. 제어 플로우 그래프(210)는 프로그램의 실행의 플로우를 나타내고 있다. 함수 블럭 또는 노드(예를 들어, 1, 2, 3, 4, 5, 6)는 아크(예를 들어, A, B, C, D, E, F)에 의해 지시된 순서로 실행된다. 제어 플로우 그래프(210)는 프로그램에 대해 산출된 제어 플로우의 일 예이며, 다른 제어 플로우 그래프는 보다 더 복잡할 수 있다.
제어 플로우 그래프(210)는, 도해가 아닌 아크 및 블럭을 나타내는 데이터 엔트리에 따라서 표현될 수도 있다. 그 예로써 아크 대 블럭 맵(220)이 제공된다. 아크 대 블럭 맵(220)은 제어 플로우 그래프(210) 내의 각 아크에 대한 블럭 또는 노드 관계를 제공한다. 프로그램에 대한 프로세스의 특정 경로와 관련된 코드의 블럭은 아크 대 블럭 맵(220)을 검사함으로써 결정될 수 있다.
도시된 예에서, 프로그램의 실행은 노드 1로부터의 상이한 두 경로를 취하여 노드 6에서 프로그램의 끝에 이를 수 있다. 한 경로로서, 코드의 블럭에 대한 실행은 아크 B 및 D를 통해 진행되며, 다른 한 경로로서, 코드의 블럭에 대한 실행은 아크 C 및 E를 통해 진행될 수 있다. 제어 플로우 그래프(210)에 의해 나타난 프로그램에 대한 코드 커버리지 데이터를 얻기 위해서는, 프로그램의 실행에 이용될 수 있는 여러 가지 경로가 고려된다. 또한, 노드 1부터 노드 6까지의 경로 내에 포함되지 않은 프로그램의 다른 측면도 고려된다. 예를 들어, 소정의 프로그램은 "백 에지(back edges)"라고 지칭되는 것을 가질 수 있다. 백 에지는 아크 H로 나타나 있으며, 노드가 다른 노드와 상호 종속적인 관계(a codependent relationship)를 가질 경우에 해당한다. 노드 4는 백 에지로 인해 노드 2와 상호 의존적인 관계를 갖는다. 백 에지는 노드 2가 실행되면 노드 4가 실행되어야만 한다는 것을 나타낸다. 그러나, 정규 실행 플로우에 있어서, 노드 4가 실행되면 노드 2가 실행되어야 한다. 따라서, 노드 2 및 노드 4는 백 에지 H에 의해 생성된 상호 종적적인 관계를 갖는다. 코드 커버리지에 대한 일 실시예에서, 백 에지는, 프로그램의 정규 범위 밖에서 프로세스에 상당하기 때문에 프로브된다.
프로그램의 플로우에 대해 고려되어야할 또 다른 측면은 함수 호출(function call), 또는 프로그램의 다른 부분에 대한 호출의 존재이다. 호출이 아크 G에 의해 나타나 있다. 아크 G에 대응하는 호출은 노드(50)로 호출되고 함수(215)가 실행되도록 지시하며 값을 리턴시킬 수 있다. 코드 커버리지에 대한 일 실시예에서, 프로그램의 다른 부분 또는 프로그램의 다른 함수에 대한 호출은 통상 프로브되며, 따라서 코드 커버리지 데이터가 호출을 포함한다.
프로그램의 제어 플로우에 대해 고려되어야할 또 다른 측면은, 외부 데이터 엔트리 포인트(external data entry points)이다. 예를 들어, 외부 엔트리 포인트(75)는 아크 J를 통해 노드 1에 데이터를 제공한다. 외부 엔트리 포인트는 사용자로부터의 입력과 같이, 코드의 블럭(예를 들어, 노드 1)이 실행을 위해 사용하는 외부 소스로부터의 데이터에 대한 엔트리의 포인트를 나타낸다. 코드 커버리지에 대한 일 실시예에서, 외부 엔트리 포인트는 프로브되며, 따라서 코드 커버리지 데이터가 데이터에 대한 이들 외부 엔트리를 포함한다.
아크 대 블럭 맵(220)은, 백 에지, 호출 및 외부 엔트리 포인트에 대한 엔트 리를 포함하도록 제어 플로우 그래프(210)를 통해 부가적인 패스(passes)로부터 수정될 수 있다. 따라서, 일 실시예에서, 프로브의 최적화는, 사용된 프로브의 수를 최소화함과 동시에, 코드 커버리지 데이터 전부를 모으는 것을 포함한다. 이하 도시될 도 3 내지 도 5는 프로그램 계측에 사용되는 프로브의 수를 최소화하는 그래픽적 방법 및 과정을 나타낸다.
도 3은 본 발명의 일 실시예에 따라, 도 2의 제어 플로우 그래프 및 아크 대 블럭 맵에 대응하는 예시적인 포스트 도미네이터 트리 및 최적화 맵을 도시한다. 포스트 도미네이터 트리(310)는 도 2에 도시된 제어 플로우 그래프(210) 내의 블럭 및 그 연관 아크에 대한 포스트 도미네이터 관계를 도시한다. 포스트 도미네이터는 제1 코드 블럭 및 제2 코드 블럭 사이의 관계를 말한다. 제2 코드 블럭이 실행될 수 있기 전에 제1 코드 블럭이 실행되어야 하는 경우, 제2 코드 블럭은 제1 코드 블럭의 "포스트 도미네이터(post-dominator)"라 지칭된다. 따라서, 동일한 예에서, 제1 코드 블럭은 제2 코드 블럭의 "도미네이터(dominator)"라 지칭된다.
포스트 도미네이터 트리의 산출은 포스트 도미네이터 트리 내의 "잎(leaves)"인 코드 블럭의 결정을 제공한다. 잎은 포스트 도미네이터 트리의 끝 지점, 또는 자(children)가 없는 노드를 의미한다. 다른 코드 블럭들은 잎 블럭이 실행되도록 실행되어야 하지만, 다른 코드 블럭들은 잎 노드의 실행에 의존하지 않는다. 본 예에서, 포스트 도미네이터 트리(310)는 3개의 잎, 즉 X, Y 및 Z를 포함한다. 노드 6은, 다른 코드 블럭들이 그 실행에 의존하지 않기 때문에 잎이다. 또한, 노드 3 및 4는, 이들 노드가 노드 3 및 4에 후속하는 노드(예를 들어, 노드 5 및 6)의 실행 전에 반드시 실행될 필요가 없기 때문에 잎이다.
포스트 도미네이터 트리의 잎이 발견되면, 최적화 맵이 생성된다. 최적화 맵은 포스트 도미네이터 트리의 잎에 대응하는 엔트리 및 포스트 도미네이터 트리를 통해 가로질러 잎까지 도달하는 아크를 포함한다. 본 예에서, 최적화 맵(320)은 3개의 잎 노드(X, Y, Z)에 대한 엔트리와, 횡단되어 각각의 특정 잎 노드(예를 들어, A, B, C, F)에 도달하는 아크와 엔트리의 관계를 포함한다. 프로브 삽입 포인트를, 프로그램과 연관된 모든 아크가 아닌, 최적화 맵 엔트리에 대응하는 포인트로 한정하는 것은, 프로그램 계측을 위한 프로브 삽입을 최적화한다.
다른 실시예에서, 프로그램에 대해 산출된 프로브는 포스트 도미네이터 트리(310) 내에 삽입된다. 잎 노드의 부 노드(parent node)가 추적될 때 다른 프로브와 만날 경우, 맵핑(mapping)이 중지될 수 있기 때문에, 프로브를 포스트 도미네이터 트리 내에 삽입하는 것은 보다 컴팩트(compact)한 맵핑을 제공한다. 따라서, 이미 프로브에 의해 커버된 것으로 도시된 노드 및 아크는 다른 프로브에 의해서도 커버된다. 또한, 백 에지에 대해 생성된 프로브 및 외부 엔트리 포인트는 노드 맵핑 시, 또 다른 상세화(refinement)를 위해 트리 내에 포함될 수도 있다.
아크 및 블럭이 도 2 및 도 3 각각에서 문자 및 숫자로 지칭되었지만, 각각의 아크 및 블럭을 구분하기 위한 다른 식별자 - 모든 숫자를 포함함 - 도 사용될 수 있다.
도 4는 본 발명의 일 실시예에 따라, 프로브를 프로그램 내에 최적화여 삽입함으로써 프로그램을 계측하기 위한 프로세스에 대한 예시적 동작 흐름도를 나타낸 다. 프로세스(400)는 프로그램이 계측을 위해 선택되는 시작 블럭(402)에서 시작된다. 프로세싱은 동작 블럭(404)에서 계속된다.
동작 블럭(404)에서, 프로그램에 대한 제어 플로우 그래프가 산출된다. 제어 플로우 그래프는 도 2에 도시된 제어 플로우 그래프와 유사할 수 있다. 일단 제어 플로우 그래프가 생성되면, 프로세싱은 동작 블럭(406)으로 진행된다.
동작 블럭(406)에서, 아크 대 블럭 맵은 제어 플로우 그래프로부터 구축된다. 일 실시예에서, 블럭 맵에 대한 아크는 도 2에 도시된 아크 대 블럭 맵과 유사하다. 다른 실시예에서, 아크 대 블럭 맵은 개별적인 메모리 엔트리이다. 각각의 메모리 엔트리는 프로그램에 대응하는 모든 블럭 및 아크를 리스트(list)한다. 블럭에 대한 메모리 엔트리에서, 특정 아크에 대응하는 블럭은 그 특정 아크에 관련된 것으로서 플래그(flag)된다. 아크에 대한 메모리 엔트리에서, 각각의 아크는 그 대응 블럭으로 플래그된다. 따라서, 아크 및 블럭은, 아크 및 블럭에 대한 커버리지 데이터에 관한 정보를 얻음으로써 관련 블럭 및 아크에 대한 커버리지 데이터가 각각 분석되도록 상호 참조된다. 프로세싱은 동작 블럭(408)으로 이어진다.
동작 블럭(408)에서, 포스트 도미네이터 트리가 프로그램에 대해 구축된다. 포스트 도미네이터 트리는 도 3에 도시된 포스트 도미네이터 트리와 유사하거나, 포스트 도미네이터 트리를 나타내는 데이터일 수 있다. 일단 포스트 도미네이터 트리가 산출되면, 프로세싱은 동작 블럭(410)으로 이동한다.
동작 블럭(410)에서, 포스트 도미네이터 트리에 대응하는 최적화 맵이 구축된다. 최적화 맵은 포스트 도미네이터 트리의 입에 대한 엔트리를 포함한다. 또 한, 최적화 맵은 프로브가 프로그램 내에 삽입되는 다른 엔트리도 포함한다. 포스트 도미네이터 트리를 구축하는 프로세스는 이하 도 5에 대한 논의를 할 때 기술될 것이다. 일단, 최적화 맵이 생성되면, 프로세싱은 동작 블럭(412)로 이동한다.
동작 블럭(412)에서, 최적화 맵의 엔트리에 대응하는 프로브가 프로그램 내에 삽입된다. 전체 프로그램에 대한 코드 커버리지 데이터를 제공함과 동시에, 프로그램 내에 삽입된 프로브의 수를 최적화하여 프로브의 수를 줄인다. 프로세싱은 동작 블럭(414)에서 계속된다.
동작 블럭(414)에서, 삽입된 프로브를 갖는 프로그램을 나타내는 바이너리가 실행된다. 프로그램이 실행되는 동안, 프로브는 상기 실행 동안 프로그램의 일부가 사용된 데이터를 리턴시킨다. 프로세싱은 동작 블럭(416)에서 계속된다.
동작 블럭(416)에서, 바이너리가 실행되는 동안 또는 데이터가 프로브로부터 리턴된 경우, 리턴된 데이터는 최적화 맵 상에 오버랩된다. 최적화 맵 상에 데이터를 오버랩시키는 것은 프로브를 프로그램에 대한 아크와 상호 연관시킨다. 달리 말하면, 최적화 맵을 사용하여 코드의 실행을 나타내는 데이터를 리턴시키는 프로브가 그 프로브와 연관된 아크와 매치된다. 최적화 맵을 오버레이시켜 각 프로브가 그 연관 아크와 결합되면, 프로세싱은 동작 블럭(418)에서 계속된다.
동작 블럭(418)에서, 최적화 맵을 사용하여 각각의 프로브와 연관된 각 아크는, 아크 대 블럭 맵을 사용하여 상기 연관된 블럭에 맵핑 백(mapping back)된다. 따라서, 각 프로브는 코드의 실행을 보고하는 각 블럭과 연관된다. 블럭 레벨 및 아크 레벨 모두에 대해 맵핑 백하는 것은 프로그램에 대한 아크 및 블럭 커버리지 데이터를 제공한다. 아크 및 블럭 커버리지 데이터는 프로그램에 대한 코드 커버리지 데이터를 제공한다. 코드 커버리지가 제공되면, 프로세싱이 종료 블럭(420)으로 이동하여, 프로세스(400)가 종료된다.
도 5는 본 발명에 따라, 최적화 맵을 구축하기 위한 프로세스에 대한 예시적 동작 흐름도를 나타낸다. 프로세스(500)는 도 4에 도시된 프로세스(400)가 동작 블럭(410)을 엔터(enter)하는 엔터 블럭(502)에서 엔터된다. 프로세싱은 동작 블럭(504)에서 계속된다.
동작 블럭(504)에서, 맵 엔트리는 이미 산출된 포스트 도미네이터 트리의 잎에 대한 최적화 맵 내에서 생성된다. 포스트 도미네이터 트리의 각 잎은 최적화 맵 내의 엔트리로 귀착된다. 따라서, 최적화 맵의 각 엔트리는 프로그램 내에 삽입되는 프로브로 귀착된다. 제어 플로우 그래프의 각 아크와 상호 연관된 프로브 보다는 포스트 도미네이터 트리의 잎과 상호 연관된 프로브를 삽입함으로써, 필요한 프로브의 수가 상당히 줄어든다. 포스트 도미네이터 트리의 잎에 대응하는 엔트리가 최적화 맵 내에 생성되고 나면, 프로세싱은 결정 블럭(506)에서 계속된다.
결정 블럭(506)에서, 백 에지가 코드의 실행 플로우 내에 존재하는지 여부를 판정하기 위해 프로그램의 제어 플로우를 통해 다른 패스가 만들어진다. 앞서 언급한 바와 같이, 백 에지는 프로그램 내의 둘 이상의 코드 블럭 사이의 상호 의존성을 생성할 수 있다. 백 에지가 존재하지 않으면, 프로세싱은 결정 블럭(510)으로 진행한다. 그러나, 백 에지가 프로그램 내에 존재하면, 프로세싱은 동작 블럭(508)으로 이동한다.
동작 블럭(508)에서, 엔트리는 프로그램의 실행 플로우 내에 위치하는 각 백 에지를 나타내는 최적화 맵에 부가된다. 백 에지는 프로그램의 정규 플로우 밖의 프로세스 단계를 나며, 따라서 커버리지 정보를 위해 프로브된다. 각 백 에지에 대해 엔트리를 최적화 맵에 부가하는 것은 발견된 각 백 에지에 대해 커버리지 데이터가 수집되는 것을 보장한다. 엔트리가 부가된 후에, 프로세싱은 결정 블럭(510)에서 계속된다.
결정 블럭(510)에서, 소정의 호출이 코드에 대한 실행 플로우 내에 존재하는지 여부를 판정하기 위해, 소정의 패스가 프로그램에 대한 제어 플로우를 통해 만들어진다. 호출은 다른 함수이거나 실행되고 있는 코드의 다른 부분일 수 있다. 호출이 존재하지 않는 경우, 프로세싱은 결정 블럭(514)로 나아간다. 그러나 호출이 프로그램 내에 존재하면, 프로세싱은 동작 블럭(512)으로 이동한다.
동작 블럭(512)에서, 엔트리는 프로그램에 대한 실행 플로우 내에 위치하는 각 호출을 나타내는 최적화 맵에 부가된다. 호출은 정규 프로그램 플로우 밖의 프로세스 단계를 나타내고, 따라서, 커버리지 정보를 위해 프로브된다. 엔트리를 각 호출에 대한 최적화 맵에 부가하는 것은 발견된 각 호출에 대해 커버리지 데이터가 수집되는 것을 보장한다. 엔트리가 부가된 후에, 프로세싱은 결정 블럭(514)에서 계속된다.
결정 블럭(514)에서, 소정의 엔트리 포인트가 코드의 실행 플로우 내에 존재하는지 여부를 판정하기 위해, 프로그램에 대한 제어 플로우를 통해 다른 패스가 만들어진다. 일 실시예에서, 외부 엔트리 포인트는 정규 코드 실행 경로 밖에 있 으며, 포스트 도미네이터 트리 내에서 잎으로 나타나지 않다. 외부 엔트리 포인트가 존재하지 않으면, 프로세싱은 리턴 블럭(518)으로 진행되는데, 여기서 프로세스(500)가 도 4에 도시된 동작 블럭(412)으로 리턴한다. 그러나, 외부 엔트리 포인트가 프로그램과 관련하여 존재하면, 프로세싱은 동작 블럭(516)으로 이동한다.
동작 블럭(516)에서, 엔트리는 프로그램에 대한 실행 플로우 내에 위치하는 각 외부 엔트리 포인트를 나타내는 최적화 맵에 부가된다. 앞서 언급한 바와 같이, 외부 엔트리 포인트는 프로그램에 대한 정규 플로우 밖의 프로세스 단계를 나타내며, 따라서 커버리지 정보를 위해 프로브된다. 각 외부 엔트리 포인트에 대한 최적화 맵에 엔트리를 부가하는 것은 발견된 각 외부 엔트리 포인트에 대해 커버리지 데이터가 수집되는 것을 보장한다. 엔트리가 부가된 후, 프로세싱은 종료 블럭(518)으로 진행하는데, 여기서 프로세스(500)는 도 4에 도시된 동작 블럭(412)으로 리턴한다.
상기 기술, 예 및 데이터는 본 발명의 조합의 제작 및 사용에 대한 완전한 설명을 제공한다. 본 발명의 많은 실시예가 본 발명의 정신 및 범주를 벗어나지 않고 만들어 질 수 있기 때문에, 본 발명은 이하 첨부된 청구항 내에 존재한다.
본 발명은 프로브 삽입 포인트를 최적화하여, 프로그램 내에 삽입되는 프로브의 수를 줄이며 프로그램을 계측하는 동안 오버헤드를 줄인다. 이에 따라, 오버헤드의 감소에 따라 프로그램 계측의 시간도 상당히 절약할 수 있다.

Claims (23)

  1. 프로그램을 계측하기 위한 컴퓨터 계측 방법에 있어서,
    프로그램의 함수와 연관된 포스트 도미네이터 트리를 검사하는 단계와,
    상기 포스트 도미네이터 트리에 따라 상기 프로그램 내로의 프로브 삽입을 결정하는 단계와,
    상기 프로브를 상기 프로그램 내에 삽입하는 단계를 포함하는 컴퓨터 계측 방법.
  2. 제1항에 있어서,
    상기 프로그램과 연관된 제어 플로우 그래프로부터 상기 포스트 도미네이터 트리를 생성하는 단계를 더 포함하는 컴퓨터 계측 방법.
  3. 제2항에 있어서,
    상기 제어 플로우 그래프로부터 아크 대 블럭 맵을 만들어, 상기 프로브로부터 데이터가 수신된 경우, 상기 데이터는 상기 아크 대 블럭 맵 상에 오버레이되어 상기 프로그램에 대한 아크 및 블럭을 발견하도록 하는 단계를 더 포함하는 컴퓨터 계측 방법.
  4. 제1항에 있어서,
    상기 포스트 도미네이터 트리에 따른 최적화 맵을 구축하는 단계를 더 포함하며, 상기 최적화 맵은 상기 프로브에 대응하는 엔트리를 포함하는 컴퓨터 계측 방법.
  5. 제4항에 있어서,
    백 에지에 대해 프로그램을 검사하고, 엔트리를 상기 백 에지에 대응하는 상기 최적화 맵에 부가하여, 상기 백 에지의 위치에 대응하는 제2 프로브 삽입이 상기 프로그램 내에서 이루어지도록 하는 단계를 더 포함하는 컴퓨터 계측 방법.
  6. 제4항에 있어서,
    호출을 위해 상기 프로그램을 검사하고 엔트리를 상기 호출에 대응하는 상기 최적화 맵에 부가하여, 상기 프로그램 내의 상기 호출의 위치에 대응하는 제2 프로브 삽입이 이루어지도록 하는 단계를 더 포함하는 컴퓨터 계측 방법.
  7. 제4항에 있어서,
    외부 엔트리 포인트에 대해 상기 프로그램을 검사하고, 엔트리를 상기 외부 엔트리 포인트에 대응하는 상기 최적화 맵에 부가하여, 상기 외부 엔트리 포인트의 위치에 대응하는 제2 프로브 삽입이 상기 프로그램 내에서 이루어지도록 하는 단계를 더 포함하는 컴퓨터 계측 방법.
  8. 제4항에 있어서,
    상기 프로브에 대한 아크 관계를 결정하기 위해 상기 프로브로부터 수신된 데이터를 상기 최적화 맵 상에 오버레이하는 단계를 더 포함하며,
    상기 아크 관계는 상기 프로그램에 대한 코드 커버리지 데이터를 제공하는 컴퓨터 계측 방법.
  9. 제1항에 있어서,
    상기 프로브는 상기 포스트 도미네이터 트리 내에 존재하는 잎 노드에 대응하는 컴퓨터 계측 방법.
  10. 프로그램을 계측하기 위한 컴퓨터 실행 가능 인스트럭션을 포함하는 컴퓨터 판독 가능 매체에 있어서,
    프로그램의 함수와 연관된 포스트 도미네이터를 검사하는 단계와,
    상기 포스트 도미네이터 트리에 대응하며, 상기 포스트 도미네이터 트리 내의 잎 노드에 대응하는 엔트리를 포함하는 최적화 맵을 구축하는 단계와,
    상기 최적화 맵의 각 엔트리에 대응하여 상기 프로그램 내에 프로브를 삽입하는 단계를 포함하는 컴퓨터 판독 가능 매체.
  11. 제10항에 있어서,
    상기 프로그램과 연관된 제어 플로우 그래프로부터 상기 포스트 도미네이터 를 생성하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  12. 제11항에 있어서,
    상기 제어 플로우 그래프로부터 아크 대 블럭 맵을 만들어, 데이터가 상기 프로브로부터 수신된 경우, 상기 프로그램에 대한 아크 및 블럭 커버리지 데이터를 발견하기 위해 아크 대 블럭 맵 상에 상기 데이터가 오버레이되도록 하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  13. 제10항에 있어서,
    백 에지에 대한 상기 프로그램을 검사하고 상기 백 에지에 대응하는 상기 최적화 맵에 엔트리를 부가하여, 상기 프로그램 내에 삽입된 상기 프로브의 일부가 상기 프로그램 내의 상기 백 에지의 위치에 대응하여 삽입되는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  14. 제10항에 있어서,
    호출에 대해 상기 프로그램을 검사하고 상기 호출에 대응하는 상기 최적화 맵에 엔트리를 부가하여, 상기 프로그램 내에 삽입된 상기 프로브의 일부가 상기 프로그램 내에 상기 호출의 위치에 대응하여 삽입되는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  15. 제10항에 있어서,
    외부 엔트리에 대해 상기 프로그램을 검사하고 상기 외부 엔트리 포인트에 대응하는 상기 최적화 맵에 엔트리를 부가하여, 상기 프로그램 내에 삽입된 상기 프로브의 일부가 상기 외부 엔트리 포인트의 위치에 대응하여 상기 프로그램 내에 삽입되는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  16. 제10항에 있어서,
    상기 프로브에 대한 아크 관계를 결정하기 위해 상기 최적화 맵 상에 상기 프로브로부터 수신한 데이터를 오버레이하는 단계를 더 포함하고,
    상기 아크 관계는 상기 프로그램에 대한 코드 커버리지 데이터를 제공하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  17. 프로그램을 계측하는 시스템에 있어서,
    상기 프로그램에 대응하여 제어 플로우 그래프를 산출하는 단계와,
    상기 제어 플로우 그래프에 대응하는 포스트 도미네이터 트리를 구축하는 단계와,
    상기 포스트 도미네이터에 대응하며, 상기 포스트 도미네이터 트리 내의 잎 노드에 대응하는 엔트리를 포함하는 최적화 맵을 구축하는 단계와,
    상기 최적화 맵의 각 엔트리에 대응하여 상기 프로그램 내에 프로브를 삽입하는 단계와,
    상기 프로그램의 실행 후, 상기 프로브로부터 수신된 데이터를 상기 최적화 맵 상에 오버레이하여 상기 프로그램에 대한 코드 커버리지 데이터를 제공하는 단계
    로 구성된 애플리케이션을 구비한 컴퓨팅 디바이스를 포함하는 프로그램 계측 시스템.
  18. 제17항에 있어서,
    상기 애플리케이션은 백 에지에 대해 상기 프로그램을 검사하고 상기 백 에지에 대응하는 상기 최적화 맵에 엔트리를 부가하여, 상기 프로그램 내에 삽입된 상기 프로브의 일부가 상기 백 에지의 위치에 대응하여 상기 프로그램 내에 삽입되록 하는 단계를 더 포함하는 프로그램 계측 시스템.
  19. 제17항에 있어서,
    상기 애플리케이션은 호출에 대해 상기 프로그램을 검사하고 상기 호출에 대응하는 상기 최적화 맵에 엔트리를 부가하여, 상기 프로그램 내에 삽입된 상기 프로브의 일부가 상기 호출의 위치에 대응하여 상기 프로그램 내에 삽입되록 하는 단계를 더 포함하는 프로그램 계측 시스템.
  20. 제17항에 있어서,
    상기 애플리케이션은 외부 엔트리 포인트에 대해 상기 프로그램을 검사하고 상기 외부 엔트리 포인트에 대응하는 상기 최적화 맵에 엔트리를 부가하여, 상기 프로그램 내에 삽입된 상기 프로브의 일부가 상기 외부 엔트리 포인트의 위치에 대응하여 상기 프로그램 내에 삽입되록 하는 단계를 더 포함하는 프로그램 계측 시스템.
  21. 제17항에 있어서,
    상기 애플리케이션은 각각 상기 제어 플로우 그래프에 대응하는 아크 맵 및 블럭 맵을 구축하여, 상기 아크 맵 및 블럭 맵이 상기 제어 플로우 그래프에 대한 상기 아크 및 블럭 관계를 상호 참조하도록 하는 단계를 더 포함하는 프로그램 계측 시스템.
  22. 제21항에 있어서,
    상기 애플리케이션은 최적화 맵 상에 오버레이된 상기 데이터를 상기 아크 맵 및 블럭 맵 상에 오버레이하여 상기 프로그램에 대한 상기 코드 커버리지 데이터를 상세화(refine)하는 단계를 더 포함하는 프로그램 계측 시스템.
  23. 제21항에 있어서,
    상기 프로브는, 코드의 아크 및 블럭에 대한 프로브 맵핑의 복제가 방지되도록 포스트 도미네이트 트리 내에 포함되는 프로그램 계측 시스템.
KR1020050028965A 2004-04-07 2005-04-07 프로그램 계측 동안의 프로브 최적화 방법 및 시스템 KR20060045568A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/819,463 2004-04-07
US10/819,463 US7590521B2 (en) 2004-04-07 2004-04-07 Method and system for probe optimization while instrumenting a program

Publications (1)

Publication Number Publication Date
KR20060045568A true KR20060045568A (ko) 2006-05-17

Family

ID=34939121

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050028965A KR20060045568A (ko) 2004-04-07 2005-04-07 프로그램 계측 동안의 프로브 최적화 방법 및 시스템

Country Status (5)

Country Link
US (1) US7590521B2 (ko)
EP (1) EP1589429A3 (ko)
JP (1) JP2005302028A (ko)
KR (1) KR20060045568A (ko)
CN (1) CN1694075A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110108166A (ko) * 2010-03-26 2011-10-05 삼성전자주식회사 코드 오버레이 생성 장치 및 방법
WO2016027992A1 (ko) * 2014-08-18 2016-02-25 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818721B2 (en) * 2006-02-01 2010-10-19 Oracle America, Inc. Dynamic application tracing in virtual machine environments
US7805510B2 (en) 2006-05-11 2010-09-28 Computer Associates Think, Inc. Hierarchy for characterizing interactions with an application
US8656006B2 (en) 2006-05-11 2014-02-18 Ca, Inc. Integrating traffic monitoring data and application runtime data
US9009680B2 (en) 2006-11-30 2015-04-14 Ca, Inc. Selecting instrumentation points for an application
JP2008140162A (ja) * 2006-12-01 2008-06-19 Hitachi Ltd デバッグ情報収集方法
US7917911B2 (en) 2006-12-01 2011-03-29 Computer Associates Think, Inc. Automated grouping of messages provided to an application using execution path similarity analysis
US7689610B2 (en) 2006-12-01 2010-03-30 Computer Associates Think, Inc. Automated grouping of messages provided to an application using string similarity analysis
US8176476B2 (en) * 2007-06-15 2012-05-08 Microsoft Corporation Analyzing software usage with instrumentation data
US20090119636A1 (en) * 2007-11-02 2009-05-07 Paul Kettley Instrumenting a compiled software routine for augmentation
US8752007B2 (en) * 2008-03-26 2014-06-10 Avaya Inc. Automatic generation of run-time instrumenter
US8739145B2 (en) * 2008-03-26 2014-05-27 Avaya Inc. Super nested block method to minimize coverage testing overhead
US8291399B2 (en) * 2008-03-26 2012-10-16 Avaya Inc. Off-line program analysis and run-time instrumentation
US8484623B2 (en) * 2008-03-26 2013-07-09 Avaya, Inc. Efficient program instrumentation
US8473935B2 (en) * 2008-04-21 2013-06-25 Microsoft Corporation Just-ahead-of-time compilation
US8762960B2 (en) * 2009-09-30 2014-06-24 Freescale Semiconductor, Inc. Software probe minimization
US8448147B2 (en) * 2010-02-15 2013-05-21 International Business Machines Corporation Heterogenic Coverage Analysis
US8978018B2 (en) * 2010-12-02 2015-03-10 International Business Machines Corporation Reversibly instrumenting a computer software application
US10203974B2 (en) * 2010-12-20 2019-02-12 Microsoft Technology Licensing, Llc Probe insertion via background virtual machine
WO2013011356A1 (en) * 2011-07-20 2013-01-24 Freescale Semiconductor, Inc. Method and apparatus for enabling an executed control flow path through computer program code to be determined
US20130046912A1 (en) * 2011-08-18 2013-02-21 Maxeler Technologies, Ltd. Methods of monitoring operation of programmable logic
US8726255B2 (en) 2012-05-01 2014-05-13 Concurix Corporation Recompiling with generic to specific replacement
US20130297181A1 (en) * 2012-05-04 2013-11-07 Gm Global Technoloby Operations Llc Adaptive engine control in response to a biodiesel fuel blend
US8793669B2 (en) 2012-07-17 2014-07-29 Concurix Corporation Pattern extraction from executable code in message passing environments
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US9158935B2 (en) * 2013-06-07 2015-10-13 Microsoft Technology Licensing, Llc Automatic mediation of resource access in mobile applications
US9292269B2 (en) * 2014-01-31 2016-03-22 Nvidia Corporation Control flow optimization for efficient program code execution on a processor
CN105279196B (zh) * 2014-07-23 2019-03-19 阿里巴巴集团控股有限公司 测试脚本的生成方法和装置
US9658942B2 (en) * 2015-04-02 2017-05-23 International Business Machines Corporation Dynamic tracing framework for debugging in virtualized environments
US11093374B2 (en) 2016-08-09 2021-08-17 SeaLights Technologies LTD System and method for continuous testing and delivery of software
US10025570B2 (en) * 2016-09-28 2018-07-17 Intel Corporation Modifying applications for incremental checkpoints
US10402309B2 (en) * 2017-05-02 2019-09-03 Microchip Technology Incorporated Code coverage tracking for a microcontroller program
US11086759B2 (en) * 2018-09-27 2021-08-10 SeaLights Technologies LTD System and method for probe injection for code coverage
US11573885B1 (en) 2019-09-26 2023-02-07 SeaLights Technologies LTD System and method for test selection according to test impact analytics

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57153343A (en) * 1981-03-18 1982-09-21 Hitachi Ltd Compile method for architecture program
JPH01216440A (ja) * 1988-02-24 1989-08-30 Yokogawa Electric Corp プログラムの実行解析システム
US5613118A (en) * 1994-06-20 1997-03-18 International Business Machines Corporation Profile-based preprocessor for optimizing programs
US5790858A (en) * 1994-06-30 1998-08-04 Microsoft Corporation Method and system for selecting instrumentation points in a computer program
US5689712A (en) * 1994-07-27 1997-11-18 International Business Machines Corporation Profile-based optimizing postprocessors for data references
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5940618A (en) * 1997-09-22 1999-08-17 International Business Machines Corporation Code instrumentation system with non intrusive means and cache memory optimization for dynamic monitoring of code segments
US7140008B2 (en) * 2002-11-25 2006-11-21 Microsoft Corporation Dynamic temporal optimization framework
US7051034B1 (en) * 2002-12-18 2006-05-23 Oracle International Corporation Dynamic optimization for processing a restartable sub-tree of a query execution plan

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110108166A (ko) * 2010-03-26 2011-10-05 삼성전자주식회사 코드 오버레이 생성 장치 및 방법
WO2016027992A1 (ko) * 2014-08-18 2016-02-25 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
KR20160021585A (ko) * 2014-08-18 2016-02-26 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Also Published As

Publication number Publication date
EP1589429A3 (en) 2008-06-04
JP2005302028A (ja) 2005-10-27
US7590521B2 (en) 2009-09-15
EP1589429A2 (en) 2005-10-26
CN1694075A (zh) 2005-11-09
US20050229165A1 (en) 2005-10-13

Similar Documents

Publication Publication Date Title
KR20060045568A (ko) 프로그램 계측 동안의 프로브 최적화 방법 및 시스템
CN109426723B (zh) 使用释放后内存的检测方法、系统、设备及存储介质
Beschastnikh et al. Leveraging existing instrumentation to automatically infer invariant-constrained models
CN111104335B (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
US6823507B1 (en) Detection of memory-related errors in computer programs
CN102110051B (zh) 应用程序切片技术的静态缺陷检测方法
US20060123384A1 (en) System and method for automatically identifying compound refactorings of program code through quantitative metric analysis
US8140911B2 (en) Dynamic software tracing
US20110145799A1 (en) Path-sensitive dataflow analysis including path refinement
Wolf Behavioral intervals in embedded software: timing and power analysis of embedded real-time software processes
JP6303749B2 (ja) ソフトウェアプログラムを解析する方法及びシステム並びに非一時的なコンピュータ可読媒体
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
Wang et al. Accurate source-level simulation of embedded software with respect to compiler optimizations
CN105468517B (zh) 一种基于黑盒测试用例约简的统计错误定位方法
KR102114547B1 (ko) 대상 프로그램에 포함된 대상 함수를 테스트하는 방법 및 장치
CN117215959A (zh) 软件测试方法、装置、设备及存储介质
KR20120038197A (ko) 멀티 트레드 프로그램에서 변수의 단독 메모리 접근여부를 분석하는 방법
Yount et al. Graph-matching-based simulation-region selection for multiple binaries
CN112699376A (zh) 源代码逻辑漏洞检测方法、装置、计算机设备及存储介质
Dhatchayani et al. Test Case Generation and Reusing Test Cases for GUI Designed with HTML.
Malburg et al. Tuning dynamic data flow analysis to support design understanding
KR101674787B1 (ko) 프로그램의 성능 측정 시스템 및 방법
CN103914381A (zh) 生成时序安全属性类缺陷模式相关的函数摘要信息的方法
KR20150052725A (ko) 모델링 코드 검증 방법, 이를 수행하는 모델링 코드 검증 장치 및 이를 저장하는 기록매체
Horváth et al. Predicting bugs using symbolic execution graph

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid