KR20100108816A - 프로그램의 동적 분석 방법 및 그 장치 - Google Patents

프로그램의 동적 분석 방법 및 그 장치 Download PDF

Info

Publication number
KR20100108816A
KR20100108816A KR1020090027046A KR20090027046A KR20100108816A KR 20100108816 A KR20100108816 A KR 20100108816A KR 1020090027046 A KR1020090027046 A KR 1020090027046A KR 20090027046 A KR20090027046 A KR 20090027046A KR 20100108816 A KR20100108816 A KR 20100108816A
Authority
KR
South Korea
Prior art keywords
instruction
function
exception
executed
execution
Prior art date
Application number
KR1020090027046A
Other languages
English (en)
Other versions
KR101581001B1 (ko
Inventor
정재훈
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020090027046A priority Critical patent/KR101581001B1/ko
Priority to JP2010045618A priority patent/JP5523872B2/ja
Priority to US12/726,705 priority patent/US8769504B2/en
Publication of KR20100108816A publication Critical patent/KR20100108816A/ko
Application granted granted Critical
Publication of KR101581001B1 publication Critical patent/KR101581001B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Abstract

동작중인 분석 대상 프로그램에 영향을 미치지 않으면서 분석 대상 프로그램의 실행을 추적하고 디버깅하거나 프로파일링할 수 있는, 프로그램의 동적 분석 방법 및 그 장치가 개시된다. 본 발명의 일양상에 따른 프로그램 동적 분석 방법은, 분석 대상 프로그램을 구성하는 함수의 첫 명령어 실행 시작과 마지막 명령어 실행직후 예외 명령어를 삽입, 실행함으로써, 함수의 실행전후의 환경값을 알아낼 수 있다. 이에 따라, 분석하고자 하는 프로그램에 영향을 주지 않으면서 동적으로 프로그램을 분석할 수 있다.
동적추적, 동적분석, 예외(exception) 핸들러

Description

프로그램의 동적 분석 방법 및 그 장치 {Dynamic instrumentation method and apparatus of program}
본 발명의 일양상에 따른 기술분야는 프로그램의 실행 추적 및 분석에 관한 것으로, 보다 상세하게는 동작중인 프로그램에 영향을 주지 않고 프로그램을 동적으로 추적하여 분석하는 방법 및 그 장치에 관한 것이다.
응용 프로그램을 개발하는 과정에서 프로그램이나 시스템의 오류를 찾아내기 위한 여러가지 방법들이 존재한다. 예를 들어, 분석대상 프로그램을 구성하는 명령어(instruction)의 몇몇 위치에 예외 명령어(Break instruction)를 삽입하여 예외처리상황(Exception)이 발생되도록 하고, 그에 따라 만들어지는 하드웨어 신호를 운영체제(Operation System)가 감지하여 추적 프로그램을 구동함으로써 문제점을 찾아낼 수 있다. 이러한 방법들의 일예로 SSIL(Single-Stepping In Line), SSOL(Single-Stepping Out of Line) 방법 들이 있다.
이 과정에서 분석 대상 프로그램 자체의 실행 추적뿐만 아니라 이 프로그램의 실행을 지원하는 운영체제(Operating System, OS)의 동작도 함께 추적되어야 한다. 이를 위해 서로 다른 영역, 즉 분석 대상 프로그램이 실행되는 애플리케이션 영역과 운영체제 영역에서 생성되고 처리되는 데이터를 일관된 방법으로 관리하여야 한다.
그러나 이 과정에서 적절하지 않는 영역에서 분석 대상 프로그램이 실행될 수도 있고, 분석 대상 프로그램의 주소를 경우에 따라 변경해야 하는 등 메모리 관리나 주소 관리가 복잡해 질 수 있다.
따라서, 본 발명의 일 양상에 따라, 동작중인 분석 대상 프로그램에 영향을 미치지 않으면서 분석 대상 프로그램의 실행을 추적하고 디버깅하거나 프로파일링할 수 있는, 프로그램의 동적 분석 방법 및 그 장치를 제공하고자 한다.
본 발명의 일 양상에 따른 프로그램의 동적 분석방법은, 분석 대상 프로그램을 구성하는 함수의 첫 명령어 실행 시작과 마지막 명령어 실행직후 예외 명령어를 삽입, 실행함으로써, 함수의 실행전후의 환경값을 알아낸다.
일양상에 따라, 프로그램을 구성하는 함수의 첫 명령어 실행 시작시 예외 명령어를 삽입하여 실행함으로써, 함수의 실행전의 환경값을 저장하고, 함수를 구성하는 마지막 명령어가 실행된 후 리턴 주소로 진행하면 예외 명령어가 실행되어, 함수의 실행 직후의 환경값을 저장한다.
이때 함수를 구성하는 명령어를 저장한 후 예외 명령어로 대체하고, 예외 명령어를 실행시킨 후에는 저장된 원래 명령어를 복구하여 실행함으로써 함수의 실행 에 영향을 미치지 않도록 할 수 있다.
또한, 본 발명의 다른 양상에 따른 프로그램의 동적 분석장치는, 프로그램을 구성하는 함수의 명령어를 저장하거나, 그 위치에 예외 명령어를 삽입하는 명령어 조작부와, 예외 명령어의 실행에 의해 함수의 환경값을 저장하는 점검부를 포함한다.
본 발명의 일실시예에 따르면, 분석 대상 프로그램을 구성하는 함수를 동적으로 추적하는데 있어, 그 구체적인 추적 결과를 저장하기 위한 처리 프로그램을 운영체제 영역에서 실행할 수 있다. 그리고 분석 대상의 원 프로그램의 실행에 영향을 미치지 않으면서 프로그램을 수행을 추적할 수 있다.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대해 상세히 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일실시예에 따른 동적 분석 방법에서의 예외처리를 설명하기 위한 참조도이다.
도 1에 도시된 바와 같이, 응용 프로그램에는 그 프로그램의 수행에 필요한 여러가지 함수(function)들이 포함되어 있을 수 있다. 그 중 분석하고자 하는 함수(110)가 있으면, 이 함수(110)는 여러가지 명령어(instruction)들로 구성되어 있다. 그리고 함수(110) 실행시, 이들 명령어들을 일정한 갯수씩 묶은 페이지(112, 114) 단위로 시스템 메모리로 로딩되어 함수(110)가 실행된다. 즉, 함수(110)를 실행하기 위해, 함수를 구성하는 모든 명령어를 한번에 시스템 메모리에 로딩한 후 실행하는 것이 아니라, 먼저 제1페이지(112)를 시스템 메모리에 로딩하여 실행한 후, 다음 페이지인 제2페이지(114)를 시스템 메모리에 로딩하여 실행한다.
한편 함수(110)의 실행과정에서, 애플리케이션 영역(10)뿐만 아니라 운영체제 영역(20)에서 동작하는 여러가지 시스템 콜(system call), 핸들러(handler) 등이 실행될 수 있다. 함수(110) 실행시에 있어서, 애플리케이션 영역(10)에서 운영체제 영역(20)으로의 진입은 예외처리상황(exception)에 의해 이루어지며, 예외처리상황(exception)이 발생되면 예외처리 핸들러(exception handler)(120)가 호출되어 점검 핸들러(probe handler)(130)가 실행된다.
점검 핸들러(130)는 예외처리정보 저장부(140)에 저장되어 있는 예외 명령어(Break inst)와 점검 포인트 주소정보를 가지고, 예외처리와 관련된 절차를 수행한다. 예외처리와 관련된 상세한 절차는 이하 도 2a 내지 도 2h를 참조하여 상세히 설명한다.
도 2a 내지 도 2g는 본 발명의 일실시예에 따른 동적 분석 절차를 상세히 설명하는 도면이다.
먼저 도 2a에 도시한 바와 같이 함수를 실행하기 위해서는 그 함수를 구성하는 제1명령어(1st instruction)(211)를 실행시켜야 한다. 그런데, 이 제1명령어(211)가 포함된 페이지(210)가 아직 시스템 메모리에 로딩되지 않은 경우 페이지 오류(page fault)가 발생한다. 페이지 오류가 발생하면 페이지 오류 핸들러(page fault handler)(220)가 실행되어 해당 페이지를 시스템 메모리에 로딩한다.
그리고 나서 페이지 오류 리턴 핸들러(page fault return handler)(230)를 실행시켜 제1명령어(211)를 예외 명령어(Break instruction)로 교체하고, 제1명령어(211)는 따로 저장한다. 한편, 예외처리정보 저장부(240)는 예외 명령어와, 점검할 위치에 대한 주소정보 등을 저장하고 있다.
도 2a에 도시된 바와 같이 해당 페이지가 시스템 메모리에 로딩되면 해당 페이지의 제1명령어(211)가 실행된다. 그런데 페이지 오류 리턴 핸들러(230)에 의해 제1명령어(211)가 예외 명령어(212)로 대체되었으므로, 도 2b에 도시된 바와 같이 페이지(210)의 첫번째 위치에 있는 예외 명령어(212)가 실행된다.
다음으로 도 2c에 도시된 바와 같이 예외 명령어(212)가 실행되면, 예외상황(exception)이 발생되어 예외처리 핸들러(250)가 호출된다. 예외처리 핸들러(250)는 점검 핸들러(probe handler)(260)를 실행한다. 점검 핸들러(260)는 먼저 환경값을 측정하여(instrumentation) 저장한다. 환경값은 분석대상 프로그램의 오류를 찾아내기 위해 사용자가 알고자 하는 여러가지 값으로, 레지스터의 값, 특정변수의 값, 스택의 위치 등 모든 것이 될 수 있다. 그리고 점검 핸들러(260)는 이 함수의 리턴 주소를 두번째 명령어의 위치값으로 변경한다. 또한, 두번째 명령 어를 저장한 후 이 위치의 명령어를 예외 명령어로 대체한다. 그리고 첫번째 명령어인 제1명령어(211)를 불러와(restore) 원래 위치로 복구한다.
그러면 도 2d에 도시된 바와 같이 복구된 제1명령어(211)가 실행되고, 다음 명령어의 실행위치인 두번째 명령어로 프로그램 실행위치가 이동한다. 두번째 명령어는 도 2c에 도시된 바와 같이 점검 핸들러(260)에 의해 예외 명령어(213)로 대체되었으므로, 그 실행에 따라 예외상황(exception)이 발생되어 예외 처리 핸들러(250)가 다시 호출되고, 예외 처리 핸들러(250)는 점검 핸들러(260)를 실행한다.
점검 핸들러(260)는 첫번째 명령어와 세번째 명령어를 예외 명령어로 대체하고 두번째 명령어를 복구한다. 한편, 첫번째 명령어와 세번째 명령어는 따로 저장된다.
다음으로 도 2e에 도시된 바와 같이 복구된 두번째 명령어(214)를 실행한 후, 다음 실행위치인 세번째 명령어로 이동한다. 세번째 명령어는 도 2d에 도시된 바와 같이 점검 핸들러(260)에 의해 예외 명령어(215)로 대체되었으므로, 그 실행에 따라 예외상황(exception)이 발생되어 예외 처리 핸들러(350)가 다시 호출되고, 예외 처리 핸들러(250)는 점검 핸들러(260)를 실행한다.
점검 핸들러(260)는 두번째 명령어를 다시 예외 명령어로 대체하고 세번째 명령어를 복구한다. 그러면 도 2f에 도시된 바와 같이 두번째 명령어는 예외 명령어(213)로 대체되고, 세번째 명령어인 제3명령어(216)가 실행된다. 이후 계속해서 다음 명령어가 실행되어 함수의 마지막까지 실행된다.
함수의 마지막까지 실행되면 도 2g에 도시된 바와 같이 리턴 명령(217)이 가 리키는 위치인 두번째 명령어 위치로 이동하게 되고, 두번째 명령어는 도 2f에 되시된 바와 같이 예외 명령어(213)로 대체되었으므로, 그 실행에 따라 예외상황(exception)이 발생되어, 예외 처리 핸들러(250)가 호출되고, 예외 처리 핸들러(250)는 점검 핸들러(260)를 실행한다. 점검 핸들러(260)는 먼저 환경값을 측정하여(instrumentation) 저장한다. 환경값은 분석대상 프로그램의 오류를 찾아내기 위해 사용자가 알고자 하는 여러가지 값으로, 레지스터의 값, 특정변수의 값, 스택의 위치 등 모든 것이 될 수 있다. 이렇게 하여 함수의 실행직전과 실행직후의 환경값을 알 수 있다.
도 3은 본 발명의 일실시예에 따른 동적 분석 방법의 플로우차트이다.
먼저, 분석하고자 하는 프로그램을 구성하는 함수의 명령어가 담긴 페이지를 메모리에 로딩한다(S310). 이는 도 2a를 참조하여 전술한 바와 같이 페이지 오류 핸들러(220)에 의해 실행될 수 있다.
그리고, 프로그램을 구성하는 함수의 첫 명령어 실행 시작시 예외 명령어를 삽입하여 실행함으로써, 함수의 실행전의 환경값을 저장한다. 이를 상세하게 설명하면, 예외 명령어 및 검사 포인트 관련 데이터를 참조하여, 예외 명령어를 삽입하거나 원 명령어를 복구하는 점검 핸들러를 실행한다(S320). 예외 명령어가 실행되면, 운영체제 영역의 예외처리 핸들러(250)에 의해 점검 핸들러(probe handler)(260)가 실행되어 이 함수의 시작전 환경값을 저장한다(S330). 환경값은 분석대상 프로그램의 오류를 찾아내기 위해 사용자가 알고자 하는 여러가지 값으로, 레지스터의 값, 특정변수의 값, 스택의 위치 등 모든 것이 될 수 있다.
이때 함수를 구성하는 명령어는 예외 명령어로 대체되기 전 미리 저장되어, 예외 명령어가 실행된 후에는 저장된 원래 명령어를 복구하여 실행함으로써, 함수의 실행에 영향을 미치지 않도록 한다.
예외 명령어의 삽입과 조작에 대해 보다 상세하게 설명하면, 먼저 함수를 구성하는 첫번째 명령어를 저장한 후, 그 위치에 예외 명령어를 삽입한다. 그리고, 예외 명령어가 실행되어, 함수 실행전의 환경값을 저장하고 그 함수를 구성하는 두번째 명령어를 저장한 후 그 위치에 예외 명령어를 삽입한다. 한편, 함수의 리턴 주소를 두번째 명령어의 위치로 변경한다. 다음으로, 함수를 구성하는 첫번째 명령어가 복구되어 실행된 후 두번째 명령어 위치에 삽입된 예외 명령어가 실행되면, 함수를 구성하는 첫번째 명령어와 세번째 명령어 위치에 예외 명령어를 삽입한다. 두번째 명령어가 복구되어 실행된 후 세번째 명령어 위치에 삽입된 예외 명령어가 실행되면, 두번째 명령어 위치에 예외 명령어를 다시 삽입하고 세번째 명령어를 복구하여 실행한다. 이후는 함수의 원 명령어를 차례로 수행한다.
전술한 바와 같이 함수를 구성하는 명령어가 계속 실행되면서 점검 핸들러(260)의 조작에 의해 예외 명령어가 원 명령어에 대체될 수 있다. 그 상세한 과정은 도 2c 내지 도 2f를 참조하여 상세하게 전술한 바와 같다. 이렇게 하여 예외 명령어의 조작에 의한 예외처리를 실행하거나, 원 명령어가 함수의 마지막까지 실행된다(S340).
함수의 마지막 명령어까지 실행되었는지의 여부를 판단하여(S350), 마지막까지 실행되면, 리턴 주소가 지시하는 위치로 돌아가 예외 명령어를 실행하여, 함수 실행직후의 환경값을 저장한다(S360). 이러한 과정을 통해 함수를 구성하는 마지막 명령어가 실행된 후 리턴 주소로 진행하면 예외 명령어가 실행되어, 함수의 실행 직후의 환경값을 저장하는 것이다. 즉, 함수를 구성하는 마지막 명령어가 실행되면 그 리턴 주소로 설정된 두번째 명령어 위치로 실행위치가 이동하고, 그 위치에 삽입된 예외 명령어가 실행되어 함수의 실행 직후의 환경값을 운영체제 영역에서 알아낸다.
도 4는 본 발명의 일실시예에 따른 동적 분석 장치의 구성도이다.
본 발명의 일실시예에 따른 동적 분석 장치는 명령어 조작부(420), 점검부(410) 및 데이터베이스(430)를 포함한다. 명령어 조작부(420)는 프로그램을 구성하는 함수의 명령어를 저장하거나, 그 위치에 예외 명령어를 삽입한다. 즉, 함수를 구성하는 첫 명령어 실행 시작시 예외 명령어를 삽입하여 실행하고, 함수를 구성하는 마지막 명령어가 실행되면 리턴 주소로 진행하여 예외 명령어가 실행되도록 명령어를 관리한다. 예외 명령어의 삽입 절차와 그 관리는 도 2a 내지 도 2h를 참조하여 전술한 바와 같다.
점검부(410)는 예외 명령어의 실행에 의해 함수의 환경값을 저장한다. 즉, 점검부(410)는 함수를 구성하는 첫 명령어에 삽입된 예외 명령어의 실행에 의해 함수의 실행 직전의 환경값을 알아내고, 함수의 리턴 주소에 삽입된 예외 명령어의 실행에 의해 함수의 실행 직후의 환경값을 알아낸다. 데이터 베이스(430)는 예외 명령어(break instruction)와, 점검할 위치의 주소정보 등을 저장하고 있다.
한편, 명령어 조작부(420) 및 점검부(410)는, 운영체제 영역의 예외처리 핸 들러에 의해 실행되는 점검 핸들러(probe handler)에 의해 구현될 수 있다.
한편, 본 발명의 일실시예에 따른 방법은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이제까지 본 발명의 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 본 발명의 일실시예에 따른 동적 분석 방법에서의 예외처리를 설명하기 위한 참조도이다.
도 2a 내지 도 2g는 본 발명의 일실시예에 따른 동적 분석 절차를 상세히 설명하는 도면이다.
도 3은 본 발명의 일실시예에 따른 동적 분석 방법의 플로우차트이다.
도 4는 본 발명의 일실시예에 따른 동적 분석 장치의 구성도이다.
<도면의 주요부분에 대한 설명>
112 : 제1페이지 114 : 제2페이지
110 : 함수 120 : 예외처리 핸들러
130 : 점검 핸들러 140 : 예외처리정보 저장부
220 : 페이지 오류 핸들러 230 : 페이지 오류 리턴 핸들러
410 : 점검부 420 : 명령어 조작부
430 : 데이터베이스

Claims (10)

  1. 프로그램을 구성하는 함수의 첫 명령어 실행 시작시 예외 명령어를 삽입하여 실행함으로써, 상기 함수의 실행전의 환경값을 저장하는 단계; 및
    상기 함수를 구성하는 마지막 명령어가 실행된 후 리턴 주소로 진행하면 예외 명령어가 실행되어, 상기 함수의 실행 직후의 환경값을 저장하는 단계를 포함하는 프로그램의 동적 분석방법.
  2. 제1항에 있어서,
    상기 예외 명령어가 실행되면, 운영체제 영역의 예외처리 핸들러에 의해 점검 핸들러(probe handler)가 실행되어 상기 함수의 환경값을 저장하는 프로그램의 동적 분석 방법.
  3. 제1항에 있어서,
    상기 함수를 구성하는 명령어를 저장한 후 예외 명령어로 대체하고, 상기 예외 명령어를 실행시킨 후에는 상기 저장된 원래 명령어를 복구하여 실행함으로써 상기 함수의 실행에 영향을 미치지 않는 프로그램의 동적 분석 방법.
  4. 제1항에 있어서, 상기 함수의 실행전의 환경값을 저장하는 단계는,
    상기 함수를 구성하는 첫번째 명령어를 저장한 후, 그 위치에 상기 예외 명 령어를 삽입하는 단계;
    상기 예외 명령어가 실행되어, 상기 함수 실행전의 환경값을 저장하고 상기 함수의 리턴 주소를 변경한 후 상기 함수를 구성하는 두번째 명령어를 저장한 후 그 위치에 예외 명령어를 삽입하는 단계;
    상기 함수를 구성하는 첫번째 명령어가 복구되어 실행된 후 상기 두번째 명령어 위치에 삽입된 예외 명령어가 실행되면, 상기 함수를 구성하는 첫번째 명령어와 세번째 명령어 위치에 예외 명령어를 삽입하는 단계; 및
    상기 두번째 명령어가 복구되어 실행된 후 상기 세번째 명령어 위치에 삽입된 예외 명령어가 실행되면, 상기 두번째 명령어 위치에 예외 명령어를 다시 삽입하고 상기 세번째 명령어를 복구하여 실행하는 단계를 포함하는 프로그램의 동적 분석방법.
  5. 제4항에 있어서,
    상기 함수의 리턴 주소는 상기 함수를 구성하는 두번째 명령어 위치로 설정되는 프로그램의 동적 분석방법.
  6. 제1항에 있어서, 상기 함수의 실행 직후의 환경값을 저장하는 단계는
    상기 함수를 구성하는 마지막 명령어가 실행되면 그 리턴 주소로 설정된 두번째 명령어 위치로 실행위치가 이동하는 단계; 및
    상기 두번째 명령어 위치에 삽입된 예외 명령어가 실행되어 상기 함수의 실 행 직후의 환경값을 운영체제 영역에서 알아내는 단계를 포함하는 프로그램의 동적 분석방법.
  7. 프로그램을 구성하는 함수의 명령어를 저장하거나, 그 위치에 예외 명령어를 삽입하는 명령어 조작부; 및
    상기 예외 명령어의 실행에 의해 상기 함수의 환경값을 저장하는 점검부를 포함하는 프로그램의 동적 분석장치.
  8. 제7항에 있어서, 상기 명령어 조작부는
    상기 함수를 구성하는 첫 명령어 실행 시작시 예외 명령어를 삽입하여 실행하고, 상기 함수를 구성하는 마지막 명령어가 실행되면 리턴 주소로 진행하여 예외 명령어가 실행되도록 명령어를 관리하는 프로그램 동적 분석장치.
  9. 제7항에 있어서, 상기 점검부는
    상기 함수를 구성하는 첫 명령어에 삽입된 예외 명령어의 실행에 의해 상기 함수의 실행 직전의 환경값을 알아내고, 상기 함수의 리턴 주소에 삽입된 예외 명령어의 실행에 의해 상기 함수의 실행 직후의 환경값을 알아내는 프로그램의 동적 분석장치.
  10. 제7항에 있어서,
    상기 명령어 조작부 및 상기 점검부는, 운영체제 영역의 예외처리 핸들러에 의해 실행되는 점검 핸들러(probe handler)에 의해 구현되는 프로그램의 동적 분석 장치.
KR1020090027046A 2009-03-30 2009-03-30 프로그램의 동적 분석 방법 및 그 장치 KR101581001B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020090027046A KR101581001B1 (ko) 2009-03-30 2009-03-30 프로그램의 동적 분석 방법 및 그 장치
JP2010045618A JP5523872B2 (ja) 2009-03-30 2010-03-02 プログラムの動的分析方法及びその装置
US12/726,705 US8769504B2 (en) 2009-03-30 2010-03-18 Method and apparatus for dynamically instrumenting a program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090027046A KR101581001B1 (ko) 2009-03-30 2009-03-30 프로그램의 동적 분석 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20100108816A true KR20100108816A (ko) 2010-10-08
KR101581001B1 KR101581001B1 (ko) 2015-12-30

Family

ID=42785915

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090027046A KR101581001B1 (ko) 2009-03-30 2009-03-30 프로그램의 동적 분석 방법 및 그 장치

Country Status (3)

Country Link
US (1) US8769504B2 (ko)
JP (1) JP5523872B2 (ko)
KR (1) KR101581001B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416762B1 (ko) * 2013-02-14 2014-07-08 주식회사 엔씨소프트 온라인 게임의 봇 탐지 시스템 및 방법
US9336114B2 (en) 2012-07-24 2016-05-10 Samsung Electronics Co., Ltd. Apparatus and method for detecting error

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567206B (zh) * 2012-01-06 2014-10-29 华中科技大学 一种剖析cuda程序行为的方法
US9436474B2 (en) * 2012-07-27 2016-09-06 Microsoft Technology Licensing, Llc Lock free streaming of executable code data
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US8843901B2 (en) * 2013-02-12 2014-09-23 Concurix Corporation Cost analysis for selecting trace objectives
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9195555B2 (en) * 2013-05-24 2015-11-24 International Business Machines Corporation Error injection into the leaf functions of call graphs
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
JP6119535B2 (ja) 2013-09-30 2017-04-26 富士通株式会社 トレース方法、処理プログラム、および情報処理装置
EP3069241B1 (en) 2013-11-13 2018-08-15 Microsoft Technology Licensing, LLC Application execution path tracing with configurable origin definition
CN109992968A (zh) * 2019-03-25 2019-07-09 北京理工大学 基于二进制动态插桩的Android恶意行为动态检测方法
JP6827244B1 (ja) * 2020-09-15 2021-02-10 株式会社Attc 監査装置、監査方法、監査プログラムおよび監査システム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03268034A (ja) * 1990-03-19 1991-11-28 Hitachi Ltd プログラム実行監視方法
JP2008123438A (ja) * 2006-11-15 2008-05-29 Fujitsu Ltd コンピュータシステム、プログラム情報収集方法、およびコンピュータプログラム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819234A (en) * 1987-05-01 1989-04-04 Prime Computer, Inc. Operating system debugger
US5774724A (en) * 1995-11-20 1998-06-30 International Business Machines Coporation System and method for acquiring high granularity performance data in a computer system
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US7000225B2 (en) * 2000-12-07 2006-02-14 International Business Machines Corporation Method for inserting global breakpoints
US6957421B2 (en) * 2001-01-26 2005-10-18 Hewlett-Packard Development Company, L.P. Providing debugging capability for program instrumented code
US6918110B2 (en) * 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
US7047521B2 (en) * 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US6898785B2 (en) * 2001-08-16 2005-05-24 Hewlett-Packard Development Company, L.P. Handling calls from relocated instrumented functions to functions that expect a return pointer value in an original address space
KR20030041612A (ko) 2001-11-20 2003-05-27 (주)유니트시스템즈 서버 병목을 실시간으로 분석하는 방법
US7313734B2 (en) * 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
US7114150B2 (en) * 2003-02-13 2006-09-26 International Business Machines Corporation Apparatus and method for dynamic instrumenting of code to minimize system perturbation
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7260815B1 (en) * 2003-06-30 2007-08-21 Vmware, Inc. Method and apparatus for managing registers in a binary translator
US7543186B2 (en) * 2004-09-13 2009-06-02 Sigmatel, Inc. System and method for implementing software breakpoints
JP4388518B2 (ja) * 2005-11-01 2009-12-24 株式会社ソニー・コンピュータエンタテインメント スレッドデバッグ装置、スレッドデバッグ方法及びプログラム
JP2007133536A (ja) 2005-11-09 2007-05-31 Nec Computertechno Ltd 故障検出プログラム作成装置、プリプロセッサ、故障検出プログラム作成方法、及びプログラム
JP2007133590A (ja) 2005-11-09 2007-05-31 Fuji Xerox Co Ltd エラー処理テスト方法
US20070226702A1 (en) * 2006-03-22 2007-09-27 Rolf Segger Method for operating a microcontroller in a test environment
US8090996B2 (en) * 2006-03-31 2012-01-03 Intel Corporation Detecting soft errors via selective re-execution
US20100095281A1 (en) * 2008-10-14 2010-04-15 Riverside Research Institute Internal Function Debugger

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03268034A (ja) * 1990-03-19 1991-11-28 Hitachi Ltd プログラム実行監視方法
JP2008123438A (ja) * 2006-11-15 2008-05-29 Fujitsu Ltd コンピュータシステム、プログラム情報収集方法、およびコンピュータプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336114B2 (en) 2012-07-24 2016-05-10 Samsung Electronics Co., Ltd. Apparatus and method for detecting error
KR101416762B1 (ko) * 2013-02-14 2014-07-08 주식회사 엔씨소프트 온라인 게임의 봇 탐지 시스템 및 방법

Also Published As

Publication number Publication date
KR101581001B1 (ko) 2015-12-30
US8769504B2 (en) 2014-07-01
JP2010238228A (ja) 2010-10-21
US20100251220A1 (en) 2010-09-30
JP5523872B2 (ja) 2014-06-18

Similar Documents

Publication Publication Date Title
JP5523872B2 (ja) プログラムの動的分析方法及びその装置
US8793672B2 (en) Optimizing program by reusing execution result of subclass test function
US7950001B2 (en) Method and apparatus for instrumentation in a multiprocessing environment
US8261242B2 (en) Assisting debug memory tracing using an instruction array that tracks the addresses of instructions modifying user specified objects
US7774761B2 (en) Use of memory watch points and a debugger to improve analysis of runtime memory access errors
US20090248721A1 (en) System And Method for Stack Crawl Testing and Caching
US20070169051A1 (en) Identifying Code that Wastes Time Performing Redundant Computation
US7530056B1 (en) Method and system for detecting runtime defects in a program by comparing correct and incorrect runs
US20080148238A1 (en) Runtime Analysis of a Computer Program to Identify Improper Memory Accesses that Cause Further Problems
US20110320745A1 (en) Data-scoped dynamic data race detection
US8402446B2 (en) Associating probes with test cases
US20060277371A1 (en) System and method to instrument references to shared memory
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
CN113742119A (zh) 嵌入式系统的调用栈回溯方法、装置和计算机设备
CN104252402A (zh) 一种程序调试方法及装置
US8990627B2 (en) Leveraging page fault and page reclaim capabilities in debugging
US20120179650A1 (en) Asynchronous assertions
CN109885489B (zh) 驱动程序中数据竞争检测方法及装置
KR101701515B1 (ko) 메모리 접근 정보를 추적하기 위한 장치 및 방법
US7530060B1 (en) Methods and computer program product for optimizing binaries with coding style formalization
US7657792B2 (en) Identifying race conditions involving asynchronous memory updates
US8966455B2 (en) Flow analysis in program execution
CN113778838A (zh) 二进制程序动态污点分析方法及装置
CN111931191A (zh) Linux平台二进制软件堆溢漏洞动态检测方法及系统
KR20190022649A (ko) 처리 회로에 의한 명령 실행을 나타내는 트레이스 스트림을 생성 및 처리하는 장치 및 방법

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
LAPS Lapse due to unpaid annual fee