KR20100084036A - 소프트웨어의 에러 검출 장치 및 방법 - Google Patents

소프트웨어의 에러 검출 장치 및 방법 Download PDF

Info

Publication number
KR20100084036A
KR20100084036A KR1020090003427A KR20090003427A KR20100084036A KR 20100084036 A KR20100084036 A KR 20100084036A KR 1020090003427 A KR1020090003427 A KR 1020090003427A KR 20090003427 A KR20090003427 A KR 20090003427A KR 20100084036 A KR20100084036 A KR 20100084036A
Authority
KR
South Korea
Prior art keywords
trace
target machine
simulation
function
instruction
Prior art date
Application number
KR1020090003427A
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 삼성전자주식회사
Priority to KR1020090003427A priority Critical patent/KR20100084036A/ko
Priority to US12/639,592 priority patent/US20100180263A1/en
Publication of KR20100084036A publication Critical patent/KR20100084036A/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B23MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
    • B23GTHREAD CUTTING; WORKING OF SCREWS, BOLT HEADS, OR NUTS, IN CONJUNCTION THEREWITH
    • B23G1/00Thread cutting; Automatic machines specially designed therefor
    • B23G1/26Manually-operated thread-cutting devices
    • B23G1/261Die and tap wrenches
    • B23G1/262Tap wrenches having a V slot
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B23MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
    • B23GTHREAD CUTTING; WORKING OF SCREWS, BOLT HEADS, OR NUTS, IN CONJUNCTION THEREWITH
    • B23G1/00Thread cutting; Automatic machines specially designed therefor
    • B23G1/44Equipment or accessories specially designed for machines or devices for thread cutting
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C9/00Measuring inclination, e.g. by clinometers, by levels
    • G01C9/18Measuring inclination, e.g. by clinometers, by levels by using liquids
    • G01C9/24Measuring inclination, e.g. by clinometers, by levels by using liquids in closed containers partially filled with liquid so as to leave a gas bubble
    • G01C9/36Measuring inclination, e.g. by clinometers, by levels by using liquids in closed containers partially filled with liquid so as to leave a gas bubble of the spherical type, i.e. for indicating the level in all directions
    • 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/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

타겟 머신에서 수행되는 소프트웨어의 에러 검출을 위한 장치 및 방법이 제안된다. 일 실시예에 따르면, 타겟 머신 및 타겟 머신을 모델링하여 타겟 머신과 동일한 동작을 수행하는 기능 시뮬레이터로부터 각각 트레이스를 생성한다. 트레이스 파일은 모든 명령어에 대한 실행 정보를 포함하는 데이터 흐름 트레이스 타입 또는 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분을 나타내는 제어 흐름 트레이스 타입을 가질 수 있다. 생성된 트레이스 파일을 비교하여 소프트웨어의 에러를 검출한다.
트레이스, 소프트웨어, 에러, 시뮬레이션, 디버깅

Description

소프트웨어의 에러 검출 장치 및 방법{Apparatus and method for detecting error of software}
본 발명의 하나 이상의 양상은 데이터 처리 시스템에 관한 것으로, 더욱 상세하게는 소프트웨어의 에러 검출을 위한 장치 및 방법에 관한 것이다.
임베디드 시스템은 마이크로 프로세서 또는 마이크로 컨트롤러를 내장하여 원래 제작자가 지정한 기능만을 수행하는 장치를 의미한다. 이러한 임베디드 시스템은 다양한 응용 분야, 예를 들면, 공장 자동화, 가정 자동화, 로봇 제어를 포함하는 로봇 분야, 핸드폰, PDA, 스마트 폰 등을 포함하는 단말기기 분야, 프린터, 인터넷 냉장고, HDTV를 포함하는 정보가전기기 분야, 교환기, 라우터, 홈서버 등을 포함하는 네트워크 기기 분야 등에 적용되고 있다.
최근, 임베디드 컴퓨터 시스템의 하드웨어 사양이 고성능화되고 있으며, 다양한 전자제품이 융복합화되고 있다. 이러한 추세로 인하여 임베디드 소프트웨어의 복잡도는 점점 증가하고 있다. 이로 인해 소프트웨어 개발자가 인지하지 못하는 에러가 실제 하드웨어 즉, 타겟 머신에서 발생할 수 있다.
이런 에러를 디버깅하기 위하여 기존에 PC 환경에서와 같이 브레이크포인트 를 설정하여 특정 시점에서 소프트웨어의 작동 상태를 알아볼 수 있다. 그러나, 이러한 정적인 방식으로는 소프트웨어 전체의 데이터나 제어의 흐름을 알 수 없다. 또한, 소프트웨어가 정상적으로 종료된 경우에는 결과물이 잘못되었더라도 개발자가 에러의 위치를 찾아 디버깅하기 힘들었다.
이에 임베디드 시스템에서 런타임시 발생하는 소프트웨어 실행상태를 기록하는 트레이스(trace)라는 개념이 도입되었다. 트레이스는 소프트웨어의 실행 흐름을 기록하고 실행된 모든 명령어를 기록한 파일이다. 이를 통해 소프트웨어의 실행 흐름과 데이터의 변화과정을 개발자가 인지하고 소프트웨어상의 에러를 좀 더 자세히 검출할 수 있게 되었다. 그러나, 실시간으로 대량 발생한 트레이스를 분석하여 이해하고 에러의 위치를 찾아 수정하는 것은 쉽지 않다.
소프트웨어의 실행 결과 생성되는 대량의 트레이스로부터 효율적으로 에러를 검출할 수 있는 소프트웨어의 에러 검출 장치 및 방법이 제안된다.
일 양상에 따른 소프트웨어의 에러 검출 장치는 소스 코드를 입력받아 타겟 머신에 대응하는 동작을 시뮬레이션하고, 시뮬레이션 과정을 나타내는 시뮬레이션 트레이스를 생성하는 기능 시뮬레이터; 및 타겟 머신에서 소스 코드의 수행 결과 생성된 타겟 머신 트레이스를 수신하고, 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하고, 비교 결과 일치하지 않는 트레이스 부분으로부터 에러의 위치를 검 출하는 트레이스 비교부를 포함한다.
트레이스 비교부는 타겟 머신에서 수행되는 동작 중 기능 시뮬레이터에서 수행되지 않는 함수를 나타내는 적어도 하나의 제외 함수 리스트를 관리하고, 타겟 머신 트레이스에서 적어도 하나의 제외 함수 리스트에 포함된 함수의 실행으로 생성된 트레이스 부분을 타겟 머신 트레이스에서 제외시키고, 제외 결과 남은 타겟 머신 트레이스를 시뮬레이션 트레이스와 비교할 수 있다.
타겟 머신 트레이스는 트레이스 유닛마다 트레이스를 생성하는데 이용된 함수를 식별하는 식별 정보를 포함하고, 트레이스 비교부는 제외 함수 리스트에 포함된 함수의 식별 정보에 대응하는 식별 정보를 가지는 트레이스 유닛을 제외시킬 수 있다. 식별 정보는 함수 이름일 수 있다.
시뮬레이션 트레이스 및 타겟 머신 트레이스는 모든 명령어에 대한 실행 정보를 포함하는 데이터 흐름 트레이스 타입 및 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분을 나타내는 제어 흐름 트레이스 타입 중 적어도 하나의 타입일 수 있다.
데이터 흐름 트레이스 타입의 트레이스 유닛은 명령의 실행 싸이클 시간, 명령어, 오퍼랜드의 주소 및 오퍼랜드를 포함할 수 있다. 제어 흐름 트레이스 타입의 트레이스 유닛은 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 브랜치 주소 및 타겟 주소를 포함할 수 있다.
트레이스 비교부는 1차적으로 제어 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하고, 비교 결과 일치하지 않는 부분에 대하여 2 차적으로 데이터 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교할 수 있다.
다른 양상에 따른 소프트웨어의 에러 검출 방법은 소스 코드를 입력받아 타겟 머신에 대응하는 동작에 대한 시뮬레이션 과정을 나타내는 시뮬레이션 트레이스를 생성하는 단계; 타겟 머신에서 소스 코드를 입력받고, 소스 코드의 수행 과정을 나타내는 타겟 머신 트레이스를 생성하는 단계; 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하는 단계; 및 비교 결과 일치하지 않는 트레이스 부분으로부터 에러의 위치를 검출하는 단계를 포함할 수 있다.
일 실시예에 따르면, 타겟 머신에서 소프트웨어의 실행 결과 생성되는 대량의 트레이스로부터 효율적으로 에러를 검출할 수 있는 소프트웨어의 에러 검출 장치 및 방법을 제공할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세하게 설명한다. 본 발명의 양상을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 일 실시예에 따른 소프트웨어의 에러 검출 장치를 나타내는 블록도이다.
도 1에는 일 실시예에 따른 소프트웨어의 에러 검출 장치(110) 및 타겟 머신(120)이 도시되어 있다. 에러 검출 장치(110)는 타겟 머신(120)상에서 수행되는 소프트웨어 즉, 임베디드 소프트웨어의 에러를 효율적으로 검출하기 위한 장치이다. 타겟 머신(120)은 다양한 형태의 프로세서 또는 콘트롤러일 수 있다.
타겟 머신(120)은 명령어의 실행 과정을 나타내는 트레이스를 생성하는 트레이스 생성부(122)를 포함할 수 있다. 타겟 머신(120)은 통상적으로 전용 트레이스 포트를 포함하여, 전용 트레이스 포트에서 트레이스가 출력될 수 있다. 에러 검출 장치(110)는 타겟 머신(120)에서 출력된 트레이스를 수집한다. 도 1에는 에러 검출 장치(110) 및 타겟 머신(120)가 별도로 도시되어 있으나, 에러 검출 장치(110)가 타겟 머신(120)이 통합되어 구현될 수 있다.
일 실시예에 따른 에러 검출 장치(110)는 타겟 머신(120)을 모델링하여 타겟 머신(120)과 동일한 동작을 수행하는 기능 시뮬레이터(functional simulator)를 이용하여 트레이스를 생성하고, 타겟 머신(120)에서 생성된 트레이스와 기능 시뮬레이터에서 생성된 트레이스 파일을 비교한다. 비교 결과 차이가 나는 부분은 타겟 머신(120)의 동작을 구현한 기능 시뮬레이터에서 예상되지 못했던 런타임 에러가 발생된 부분으로 검출될 수 있다.
이하에서는, 타겟 머신(120)에서 생성된 트레이스를 타겟 머신 트레이스라고 하고, 기능 시뮬레이터(112)에서 생성된 트레이스를 시뮬레이션 트레이스라고 한 다.
시뮬레이션 트레이스 및 타겟 머신 트레이스는 적어도 하나 이상의 형태를 가질 수 있다. 이 중 데이터 흐름 트레이스(data flow trace) 타입은 모든 명령어에 대한 실행 정보를 포함한다. 트레이스의 최소 생성 단위를 트레이스 유닛이라고 할 때, 데이터 흐름 트레이스 타입의 트레이스 유닛은 명령의 실행 싸이클 시간(cycle), 실행 명령어(ex, opcode), 오퍼랜드의 주소 및 오퍼랜드를 포함할 수 있다. 여기에서 오퍼랜드는 명령어에 의한 처리 대상이 되는 데이터를 나타내고, 오퍼랜드의 주소는 오퍼랜드가 저장된 메모리의 어드레스, 레지스터 넘버 등이 될 수 있다.
제어 흐름 트레이스(control flow trace) 타입은 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 정보를 나타낸다. 제어 흐름 트레이스의 트레이스 유닛은 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 브랜치 주소(또는 소스 주소) 및 타겟 주소를 포함할 수 있다.
도 1을 참조하면, 에러 검출 장치(110)는 기능 시뮬레이터(112) 및 트레이스 비교부(114)를 포함한다.
기능 시뮬레이터(112)는 소스 코드를 입력받아 타겟 머신에 대응하는 동작에 대하여 시뮬레이션을 수행하고, 시뮬레이션 과정을 나타내는 트레이스를 생성한다. 기능 시뮬레이터(112)는 소프트웨어의 논리를 검증하는데 이용하기 위하여 타겟 머신(120)을 모델링하여 구현된다. 여기에서, 소스 코드는 소프트웨어를 컴파일하여 생성된 바이너리 파일일 수 있다.
트레이스 비교부(114)는 타겟 머신(120)에서 소스 코드의 수행 결과 생성된 타겟 머신 트레이스를 수신하고, 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하고, 비교 결과 일치하지 않는 트레이스 부분을 에러가 발생한 부분으로 검출할 수 있다.
타겟 머신(120)에서는 인터럽트 처리, 하드웨어 처리 함수와 같은 몇몇 함수가 반복 실행되거나, 특정 함수가 기능 시뮬레이터(112)와 다른 싸이클에서 실행되기도 한다. 이러한 부분에 대하여, 기능 시뮬레이터(112)는 타겟 머신(120)의 동작을 실제로 모델링하지 않고 실행한 것으로 가정하고 다음 명령어를 수행하도록 설계될 수 있다.
이와 같이 기능 시뮬레이터(112)가 타겟 머신(120)과 달리 동작하는 부분을 고려하여, 트레이스 비교부(114)는 타겟 머신(120)에서 수행되는 동작 중 기능 시뮬레이터(112)에서 수행되지 않는 동작을 나타내는 적어도 하나의 함수에 대한 리스트인 제외 함수 리스트를 관리할 수 있다. 제외 함수 리스트는 소프트웨어 로직과 연관이 없는 함수가 미리 기술된 정보이다. 즉, 제외 함수 리스트는 타겟 머신(120)에서는 실행되지만 기능 시뮬레이터(112)에서는 실제로 실행하지 않고 실행을 가정하기만 하는 함수의 리스트라 할 수 있다.
제외 함수 리스트는 사용자에 의해 미리 생성되어 저장될 수 있으며, 변경될 수 있다. 제외 함수 리스트는 텍스트, XML(extensible markup language) 문서 등 다양한 형태로 기술될 수 있다.
예를 들어, DMA(Direct Memory Access) 동작이 끝날 때까지 기다리는 함수에 대하여, 타겟 머신(120)은 실제로 함수를 수행하지만, 기능 시뮬레이터(112)는 DMA 동작이 끝났다고 가정하고 다음 명령어에 대한 동작을 수행한다. 이 경우, 타겟 머신 트레이스에는 시뮬레이션 트레이스에는 포함되지 않는 트레이스 유닛들이 포함될 것이므로, 트레이스 비교부(114)는 타겟 머신 트레이스로부터 미리 기술된 제외 함수 리스트에 포함된 함수의 실행 결과 생성되는 트레이스 유닛들을 제거한 다음, 남은 타겟 머신 트레이스와 시뮬레이션 트레이스를 비교한다.
이를 위해, 타겟 머신 트레이스에는 트레이스 유닛마다 트레이스를 생성하는데 이용된 함수를 식별하는 식별 정보가 포함될 수 있다. 여기에서, 식별 정보는 함수 이름일 수 있다. 임베디드 소프트웨어의 경우에는 동일한 함수 이름이 2번 이상 사용되지 않으므로 함수 이름이 식별 정보로 이용될 수 있다.
트레이스 비교부(114)는 트레이스 유닛 단위로 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교할 때, 타겟 머신 트레이스에서 제외 함수 리스트에 포함된 함수의 식별 정보에 대응하는 식별 정보를 가지는 트레이스 유닛이 발견되면, 해당 트레이스 유닛을 제외시킬 수 있다. 그런 다음, 트레이스 비교부(114)는 다음 트레이스 유닛을 비교할 수 있다.
트레이스는 트레이스 타입에 따라 다른 형태의 정보들로 구성되므로, 트레이스 비교부(114)의 트레이스 비교 동작은 트레이스 타입에 따라 차이가 있다.
트레이스 비교부(114)가 기능 시뮬레이터(112) 및 타겟 머신(120)에서 각각 생성된 제어 흐름 타입의 트레이스를 비교하는 경우에는, 전체 명령어에서 명령어 의 주소가 소정의 임계값 이상 변화되는 브랜치가 발생된 명령어만 비교되므로 짧은 시간 내에 소프트웨어의 에러 유무가 검증될 수 있다. 그러나, 시뮬레이션 트레이스 및 타겟 머신 트레이스 간에 브랜치가 발생된 부분의 트레이스만 비교하게 되므로, 그 외의 명령어 수행 과정에서 에러가 발생된 경우에는 에러가 검출될 수 없다.
기능 시뮬레이터(112) 및 타겟 머신(120)에서 데이터 흐름 타입의 트레이스가 생성된 경우, 각각 생성된 데이터 흐름 타입의 트레이스를 비교할 수 있다. 데이터 흐름 타입의 트레이스를 비교하는 경우, 소프트웨어를 실행하기 위한 모든 명령어의 실행 결과 즉, 명령의 실행 싸이클, 명령어, 명령어의 주소, 오퍼랜드 및 오퍼랜드 주소(소스 오퍼랜드 주소 및 타겟 오퍼랜드 주소) 등이 모두 비교되므로, 에러가 정확히 검출될 수 있다. 또한, 데이터 흐름 타입의 트레이스 비교시에는, 비교 결과 차이가 나는 트레이스 유닛에 대해서는 컴파일러(도시되지 않음)의 DU 체인(Definition-Use Chain)을 이용하여 에러로 검출된 부분에 영향을 준 명령어를 찾아서 소스 코드 상의 위치를 알아낼 수 있다. 데이터 흐름 타입의 트레이스를 비교하는 경우에는 제어 흐름 타입의 트레이스를 비교할 때보다 비교되는 트레이스의 양이 방대한 경우 오랜 시간이 걸릴 수 있다.
일 실시예에 따르면, 트레이스 비교부(114)는 1차적으로 제어 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하고, 비교 결과 에러가 발생된 부분에 대하여 데이터 흐름 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교할 수 있다. 예를 들어, 제어 흐름 트레이스 타입의 시뮬레이션 트레 이스 및 타겟 머신 트레이스 비교 결과, 에러로 검출된 지점부터는 데이트 흐름 타입 트레이스에 따른 트레이스 비교를 수행할 수 있다.
전술한 바와 같이, 일 실시예에 따르면, 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하여, 서로 다른 트레이스 유닛 부분을 에러 발생 위치로 검출할 수 있다. 따라서, 타겟 머신에서 소프트웨어의 실행 결과 생성되는 대량의 트레이스로부터 효율적으로 에러를 검출할 수 있다.
도 2는 일 실시예에 따른 소프트웨어의 에러 검출 방법을 나타내는 순서도이다.
기능 시뮬레이터에서 소스 코드를 입력받아 타겟 머신에 대응하는 동작에 대한 시뮬레이션 과정을 나타내는 시뮬레이션 트레이스를 생성한다(S 210).
타겟 머신에서 소스 코드를 입력받고, 소스 코드의 수행 과정을 나타내는 타겟 머신 트레이스를 생성한다(S 220). 시뮬레이션 트레이스를 생성하는 단계(S 210) 및 타겟 머신 트레이스를 생성하는 단계(S 220)는 순서와 무관하게 또는 동시에 수행될 수 있다.
시뮬레이션 트레이스 및 타겟 머신 트레이스는 모든 명령어에 대한 실행 정보를 포함하는 데이터 흐름 트레이스 타입 및 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 주소 변화를 나타내는 제어 흐름 트레이스 타입 중 적어도 하나의 타입의 트레이스를 생성할 수 있다. 데이터 흐름 트레이스는 명령의 실행 싸이클 시간, 명령어, 오퍼랜드의 주소 및 오퍼랜드를 포함할 수 있다. 제어 흐름 트레이스는 명령어 수행시 명령어의 위치를 나 타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 주소 정보, 즉, 브랜치 주소 및 타겟 주소를 포함할 수 있다.
시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교한다(S 230). 이때, 1차적으로 제어 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하고, 일치하지 않는 부분에 대하여 2차적으로 데이터 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교할 수 있다.
비교 결과 일치하지 않는 트레이스 부분을 에러가 발생한 부분으로 검출하여 에러의 위치가 검출될 수 있다(S 240).
도 3은 일 실시예에 따른 소프트웨어 에러 검출 검출 방법에서 트레이스 비교 방법을 나타내는 순서도이다.
타겟 머신에서 수행되는 동작 중 기능 시뮬레이터에서 수행되지 않는 함수를 나타내는 적어도 하나의 제외 함수 리스트를 판독한다(S 310). 제외 함수 리스트는 에러 검출 장치에 미리 설정되어 저장되어 있을 수 있다.
타겟 머신 트레이스에서 타겟 머신에서 수행되는 동작 중 기능 시뮬레이터에서 수행되지 않는 동작을 나타내는 적어도 하나의 제외 함수 리스트에 포함된 함수의 실행으로 생성된 트레이스 부분이 있는지 확인한다(S 320).
타겟 머신 트레이스에서 제외 함수 리스트에 포함된 함수의 실행으로 생성된 트레이스 부분을 제외시킨다(S 330). 타겟 머신 트레이스가 트레이스 유닛마다 트레이스를 생성하는데 이용된 함수를 식별하는 식별 정보를 포함하는 경우, 제외 함수 리스트에 포함된 함수의 식별 정보에 대응하는 식별 정보를 가지는 트레이스 유 닛을 제외시킬 수 있다. 식별 정보는 함수 이름일 수 있다.
제외 결과 남은 타겟 머신 트레이스를 시뮬레이션 트레이스와 비교한다(S 340).
도 3에는 타겟 머신 트레이스에서 제외 함수 리스트에 포함되는 함수의 실행 결과를 제외시키는 단계(S 330)가 비교하는 단계(S 340) 이전에 수행되는 것으로 도시되어 있으나, 이는 순차적으로 수행되어야 하는 것은 아니며 비교 과정 중에 제외 함수 리스트에 포함되는 함수의 실행 결과가 제외될 수 있다. 즉, 트레이스 유닛 단위로 시뮬레이션 트레이스와 타겟 머신 트레이스가 비교되는 중에, 타겟 머신 트레이스에서 제외 함수 리스트에 포함된 함수의 식별 정보가 발견되면, 해당 트레이스 유닛은 제외시킨 다음 다음 트레이스 유닛으로 넘어가서 시뮬레이션 트레이스와 비교 동작이 연속하여 수행될 수 있다.
본 발명의 일 양상은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 상기의 소프트웨어을 구현하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 디스크 등을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
도 1은 일 실시예에 따른 소프트웨어의 에러 검출 장치를 나타내는 블록도이고,
도 2는 일 실시예에 따른 소프트웨어의 에러 검출 방법을 나타내는 순서도이고,
도 3은 일 실시예에 따른 소프트웨어 에러 검출 검출 방법에서 트레이스 비교 방법을 나타내는 순서도이다.

Claims (16)

  1. 소스 코드를 입력받아 타겟 머신에 대응하는 동작을 시뮬레이션하고, 시뮬레이션 과정을 나타내는 시뮬레이션 트레이스를 생성하는 기능 시뮬레이터; 및
    타겟 머신에서 상기 소스 코드의 수행 결과 생성된 타겟 머신 트레이스를 수신하고, 상기 시뮬레이션 트레이스 및 상기 타겟 머신 트레이스를 비교하고, 비교 결과 일치하지 않는 트레이스 부분으로부터 에러의 위치를 검출하는 트레이스 비교부를 포함하는 소프트웨어의 에러 검출 장치.
  2. 제1항에 있어서,
    상기 트레이스 비교부는 상기 타겟 머신에서 수행되는 동작 중 기능 시뮬레이터에서 수행되지 않는 함수를 나타내는 적어도 하나의 제외 함수 리스트를 관리하고, 상기 타겟 머신 트레이스에서 상기 적어도 하나의 제외 함수 리스트에 포함된 함수의 실행으로 생성된 트레이스 부분을 제외시키고, 제외 결과 남은 타겟 머신 트레이스를 상기 시뮬레이션 트레이스와 비교하는 소프트웨어의 에러 검출 장치.
  3. 제2항에 있어서,
    상기 타겟 머신 트레이스는 트레이스 유닛마다 트레이스를 생성하는데 이용된 함수를 식별하는 식별 정보를 포함하고,
    상기 트레이스 비교부는 상기 제외 함수 리스트에 포함된 함수의 식별 정보에 대응하는 식별 정보를 가지는 트레이스 유닛을 상기 타겟 머신 트레이스로부터 제외시키는 소프트웨어의 에러 검출 장치.
  4. 제3항에 있어서,
    상기 식별 정보는 함수 이름인 소프트웨어의 에러 검출 장치.
  5. 제1항에 있어서,
    상기 시뮬레이션 트레이스 및 상기 타겟 머신 트레이스는 모든 명령어에 대한 실행 정보를 포함하는 데이터 흐름 트레이스 타입 및 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분을 나타내는 제어 흐름 트레이스 타입 중 적어도 하나의 타입을 가지는 소프트웨어의 에러 검출 장치.
  6. 제5항에 있어서,
    상기 데이터 흐름 트레이스 타입의 트레이스 유닛은 명령의 실행 싸이클 시간, 명령어, 오퍼랜드의 주소 및 오퍼랜드를 포함하는 소프트웨어의 에러 검출 장치.
  7. 제5항에 있어서,
    상기 제어 흐름 트레이스 타입의 트레이스 유닛은 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 브랜치 주소 및 타겟 주소를 포함하는 소프트웨어의 에러 검출 장치.
  8. 제5항에 있어서,
    상기 트레이스 비교부는 1차적으로 상기 제어 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하고, 비교 결과 일치하지 않는 부분에 대하여 2차적으로 상기 데이터 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하는 소프트웨어의 에러 검출 장치.
  9. 소스 코드를 입력받아 타겟 머신에 대응하는 동작에 대한 시뮬레이션 과정을 나타내는 시뮬레이션 트레이스를 생성하는 단계;
    타겟 머신에서 상기 소스 코드를 입력받고, 상기 소스 코드의 수행 과정을 나타내는 타겟 머신 트레이스를 생성하는 단계;
    상기 시뮬레이션 트레이스 및 상기 타겟 머신 트레이스를 비교하는 단계; 및
    비교 결과 일치하지 않는 트레이스 부분으로부터 에러의 위치를 검출하는 단계를 포함하는 소프트웨어의 에러 검출 방법.
  10. 제9항에 있어서,
    상기 비교하는 단계는,
    상기 타겟 머신 트레이스에서 상기 타겟 머신에서 수행되는 동작 중 기능 시 뮬레이터에서 수행되지 않는 동작을 나타내는 적어도 하나의 제외 함수 리스트에 포함된 함수의 실행으로 생성된 트레이스 부분을 제외시키는 단계, 및
    제외 결과 남은 타겟 머신 트레이스를 상기 시뮬레이션 트레이스와 비교하는 단계를 포함하는 소프트웨어의 에러 검출 방법.
  11. 제10항에 있어서,
    상기 타겟 머신 트레이스에는 트레이스 유닛마다 트레이스를 생성하는데 이용된 함수를 식별하는 식별 정보를 포함하고,
    상기 제외시키는 단계에서, 상기 제외 함수 리스트에 포함된 함수의 식별 정보에 대응하는 식별 정보를 가지는 트레이스 유닛을 상기 타겟 머신 트레이스로부터 제외시키는 소프트웨어의 에러 검출 방법.
  12. 제11항에 있어서,
    상기 식별 정보는 함수 이름인 소프트웨어의 에러 검출 방법.
  13. 제9항에 있어서,
    상기 시뮬레이션 트레이스 및 상기 타겟 머신 트레이스는 각각 모든 명령어에 대한 실행 정보를 포함하는 데이터 흐름 트레이스 타입, 및 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분을 나타내는 제어 흐름 트레이스 타입 중 적어도 하나의 타입의 트레이스를 가지는 소프트웨어의 에러 검출 방법.
  14. 제13항에 있어서,
    상기 데이터 흐름 트레이스 타입의 트레이스 유닛은 명령의 실행 싸이클 시간, 명령어, 오퍼랜드의 주소 및 오퍼랜드를 포함하는 소프트웨어의 에러 검출 방법.
  15. 제13항에 있어서,
    상기 제어 흐름 트레이스 타입의 트레이스 유닛은 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 브랜치 주소 및 타겟 주소를 포함하는 소프트웨어의 에러 검출 방법.
  16. 제13항에 있어서,
    상기 비교하는 단계는,
    1차적으로 상기 제어 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하는 단계; 및
    비교 결과 일치하지 않는 부분에 대하여 2차적으로 상기 데이터 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하는 단계를 포함하는 소프트웨어의 에러 검출 방법.
KR1020090003427A 2009-01-15 2009-01-15 소프트웨어의 에러 검출 장치 및 방법 KR20100084036A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090003427A KR20100084036A (ko) 2009-01-15 2009-01-15 소프트웨어의 에러 검출 장치 및 방법
US12/639,592 US20100180263A1 (en) 2009-01-15 2009-12-16 Apparatus and method for detecting software error

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090003427A KR20100084036A (ko) 2009-01-15 2009-01-15 소프트웨어의 에러 검출 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20100084036A true KR20100084036A (ko) 2010-07-23

Family

ID=42319948

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090003427A KR20100084036A (ko) 2009-01-15 2009-01-15 소프트웨어의 에러 검출 장치 및 방법

Country Status (2)

Country Link
US (1) US20100180263A1 (ko)
KR (1) KR20100084036A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230060407A (ko) * 2021-10-27 2023-05-04 경북대학교 산학협력단 비교 신경망 학습을 이용한 소프트웨어의 오동작 검출시스템 및 소프트웨어의 오동작 검출방법

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120124428A1 (en) * 2010-11-17 2012-05-17 Zeng Thomas M Method and system for testing software on programmable devices
US9117018B2 (en) 2010-11-25 2015-08-25 Freescale Semiconductor, Inc. Method of debugging software and corresponding computer program product
US9378116B2 (en) 2011-05-05 2016-06-28 International Business Machines Corporation Program subset execution and debug
US9081900B2 (en) * 2012-10-15 2015-07-14 Toyota Motor Engineering & Manufacturing North America, Inc. Systems and methods for mining temporal requirements from block diagram models of control systems
US10339229B1 (en) 2013-05-31 2019-07-02 Cadence Design Systems, Inc. Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
US9256515B2 (en) 2013-08-21 2016-02-09 Vmware, Inc. Stack trace compression
US9104402B2 (en) * 2013-08-21 2015-08-11 Vmware, Inc. Branch trace compression
US11256224B2 (en) * 2014-10-01 2022-02-22 Rockwell Automation Technologies, Inc. Virtual design engineering
US11487561B1 (en) 2014-12-24 2022-11-01 Cadence Design Systems, Inc. Post simulation debug and analysis using a system memory model
US10802852B1 (en) * 2015-07-07 2020-10-13 Cadence Design Systems, Inc. Method for interactive embedded software debugging through the control of simulation tracing components
US10185645B2 (en) 2017-03-08 2019-01-22 Microsoft Technology Licensing, Llc Resource lifetime analysis using a time-travel trace
US9934127B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of key frames for replay responsiveness
US9934126B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of reverse lookup data structures
US9983978B1 (en) 2017-03-08 2018-05-29 Microsoft Technology Licensing, Llc Querying an indexed time-travel trace
US9959194B1 (en) 2017-03-08 2018-05-01 Microsoft Technology Licensing, Llc Indexing a trace by insertion of memory snapshots for replay responsiveness
US10282274B2 (en) 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4569049A (en) * 1983-05-09 1986-02-04 Digital Equipment Corp. Diagnostic system for a digital computer
JPH06149614A (ja) * 1992-11-09 1994-05-31 Fujitsu Ltd 命令実行装置
DE4332993C1 (de) * 1993-09-28 1994-11-24 Siemens Ag Tracer-System zur Fehleranalyse in laufenden Realzeitsystemen
US5392420A (en) * 1993-09-30 1995-02-21 Intel Corporation In circuit emulator(ICE) that flags events occuring in system management mode(SMM)
JP3599409B2 (ja) * 1994-06-14 2004-12-08 株式会社ルネサステクノロジ 分岐予測装置
US5600579A (en) * 1994-07-08 1997-02-04 Apple Computer, Inc. Hardware simulation and design verification system and method
JP3904645B2 (ja) * 1996-12-26 2007-04-11 株式会社東芝 ハードウェア/ソフトウェア協調シミュレーション装置
US5999739A (en) * 1997-05-29 1999-12-07 Hewlett-Packard Company Method and apparatus for elimination of redundant branch instructions from a program
US6018786A (en) * 1997-10-23 2000-01-25 Intel Corporation Trace based instruction caching
US6295515B1 (en) * 1997-11-03 2001-09-25 Lucent Technologies Inc. Static partial order reduction
US6209120B1 (en) * 1997-11-03 2001-03-27 Lucent Technologies, Inc. Verifying hardware in its software context and vice-versa
US6804814B1 (en) * 1999-12-29 2004-10-12 Veritas Operating Corporation Method for simulating back program execution from a traceback sequence
US8312435B2 (en) * 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US7383168B2 (en) * 2003-01-06 2008-06-03 Fujitsu Limited Method and system for design verification and debugging of a complex computing system
US7823122B1 (en) * 2003-12-16 2010-10-26 The Mathworks, Inc. Model and subsystem function signatures
US7827539B1 (en) * 2004-06-25 2010-11-02 Identify Software Ltd. System and method for automated tuning of program execution tracing
EP1899922A2 (en) * 2005-06-29 2008-03-19 Qualcomm Incorporated Offline optimization pipeline for 3d content in embedded devices
US7711534B2 (en) * 2005-12-09 2010-05-04 International Business Machines Corporation Method and system of design verification
US8832682B2 (en) * 2008-03-28 2014-09-09 Vmware, Inc. Trace collection for a virtual machine
US8423961B2 (en) * 2008-06-06 2013-04-16 Microsoft Corporation Simulating operations through out-of-process execution

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230060407A (ko) * 2021-10-27 2023-05-04 경북대학교 산학협력단 비교 신경망 학습을 이용한 소프트웨어의 오동작 검출시스템 및 소프트웨어의 오동작 검출방법

Also Published As

Publication number Publication date
US20100180263A1 (en) 2010-07-15

Similar Documents

Publication Publication Date Title
KR20100084036A (ko) 소프트웨어의 에러 검출 장치 및 방법
Thacker et al. Automatic abstraction for verification of cyber-physical systems
US10466671B2 (en) System and method for an optimized operation of real-time embedded solutions in industrial automation
JP2017033562A (ja) 安全重視ソフトウェア開発のためのモデルベース技術および過程のためのシステムおよび方法
US9898388B2 (en) Non-intrusive software verification
US12085911B2 (en) Method, computer program and apparatus for analysing a programmable logic controller program
WO2013090105A1 (en) System and method for systematic error injection in generated code
US20160162385A1 (en) Correlation of violating change sets in regression testing of computer software
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
CN105528284A (zh) 一种内核故障注入方法及电子设备
Herber et al. Bit-precise formal verification of discrete-time MATLAB/Simulink models using SMT solving
US20230030253A1 (en) Method for analyzing a programmable logic controller program
Sülflow et al. Verification of PLC programs using formal proof techniques
US20240103479A1 (en) Computer implemented method for checking correctness of plc program
US11023357B1 (en) Method and system for sequential equivalence checking
KR101761732B1 (ko) 어플리케이션 소스 코드의 오류 검출 장치 및 그 방법
Nakamoto et al. Virtual software execution environments for distributed embedded control systems
Gustafson Discovery and Remediation of Vulnerabilities in Monolithic IoT Firmware
CN115470151B (zh) 一种应用运行分析方法、计算设备及存储介质
US9830174B2 (en) Dynamic host code generation from architecture description for fast simulation
Heimlich et al. TestLocal: just-in-time parametrized testing of local variables
Joo et al. An end-to-end tool for developing cpss from design to implementation
Chockler et al. Validation of evolving software
CN117313596A (zh) 一种定位逻辑系统设计的错误的方法、设备以及存储介质
KR20240014248A (ko) 주변 장치 모델링을 통한 펌웨어 퍼징 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right