KR20100084036A - 소프트웨어의 에러 검출 장치 및 방법 - Google Patents
소프트웨어의 에러 검출 장치 및 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23G—THREAD CUTTING; WORKING OF SCREWS, BOLT HEADS, OR NUTS, IN CONJUNCTION THEREWITH
- B23G1/00—Thread cutting; Automatic machines specially designed therefor
- B23G1/26—Manually-operated thread-cutting devices
- B23G1/261—Die and tap wrenches
- B23G1/262—Tap wrenches having a V slot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B23—MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
- B23G—THREAD CUTTING; WORKING OF SCREWS, BOLT HEADS, OR NUTS, IN CONJUNCTION THEREWITH
- B23G1/00—Thread cutting; Automatic machines specially designed therefor
- B23G1/44—Equipment or accessories specially designed for machines or devices for thread cutting
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C9/00—Measuring inclination, e.g. by clinometers, by levels
- G01C9/18—Measuring inclination, e.g. by clinometers, by levels by using liquids
- G01C9/24—Measuring 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/36—Measuring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software 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
본 발명의 하나 이상의 양상은 데이터 처리 시스템에 관한 것으로, 더욱 상세하게는 소프트웨어의 에러 검출을 위한 장치 및 방법에 관한 것이다.
임베디드 시스템은 마이크로 프로세서 또는 마이크로 컨트롤러를 내장하여 원래 제작자가 지정한 기능만을 수행하는 장치를 의미한다. 이러한 임베디드 시스템은 다양한 응용 분야, 예를 들면, 공장 자동화, 가정 자동화, 로봇 제어를 포함하는 로봇 분야, 핸드폰, 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항에 있어서,상기 타겟 머신 트레이스는 트레이스 유닛마다 트레이스를 생성하는데 이용된 함수를 식별하는 식별 정보를 포함하고,상기 트레이스 비교부는 상기 제외 함수 리스트에 포함된 함수의 식별 정보에 대응하는 식별 정보를 가지는 트레이스 유닛을 상기 타겟 머신 트레이스로부터 제외시키는 소프트웨어의 에러 검출 장치.
- 제3항에 있어서,상기 식별 정보는 함수 이름인 소프트웨어의 에러 검출 장치.
- 제1항에 있어서,상기 시뮬레이션 트레이스 및 상기 타겟 머신 트레이스는 모든 명령어에 대한 실행 정보를 포함하는 데이터 흐름 트레이스 타입 및 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분을 나타내는 제어 흐름 트레이스 타입 중 적어도 하나의 타입을 가지는 소프트웨어의 에러 검출 장치.
- 제5항에 있어서,상기 데이터 흐름 트레이스 타입의 트레이스 유닛은 명령의 실행 싸이클 시간, 명령어, 오퍼랜드의 주소 및 오퍼랜드를 포함하는 소프트웨어의 에러 검출 장치.
- 제5항에 있어서,상기 제어 흐름 트레이스 타입의 트레이스 유닛은 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 브랜치 주소 및 타겟 주소를 포함하는 소프트웨어의 에러 검출 장치.
- 제5항에 있어서,상기 트레이스 비교부는 1차적으로 상기 제어 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하고, 비교 결과 일치하지 않는 부분에 대하여 2차적으로 상기 데이터 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하는 소프트웨어의 에러 검출 장치.
- 소스 코드를 입력받아 타겟 머신에 대응하는 동작에 대한 시뮬레이션 과정을 나타내는 시뮬레이션 트레이스를 생성하는 단계;타겟 머신에서 상기 소스 코드를 입력받고, 상기 소스 코드의 수행 과정을 나타내는 타겟 머신 트레이스를 생성하는 단계;상기 시뮬레이션 트레이스 및 상기 타겟 머신 트레이스를 비교하는 단계; 및비교 결과 일치하지 않는 트레이스 부분으로부터 에러의 위치를 검출하는 단계를 포함하는 소프트웨어의 에러 검출 방법.
- 제9항에 있어서,상기 비교하는 단계는,상기 타겟 머신 트레이스에서 상기 타겟 머신에서 수행되는 동작 중 기능 시 뮬레이터에서 수행되지 않는 동작을 나타내는 적어도 하나의 제외 함수 리스트에 포함된 함수의 실행으로 생성된 트레이스 부분을 제외시키는 단계, 및제외 결과 남은 타겟 머신 트레이스를 상기 시뮬레이션 트레이스와 비교하는 단계를 포함하는 소프트웨어의 에러 검출 방법.
- 제10항에 있어서,상기 타겟 머신 트레이스에는 트레이스 유닛마다 트레이스를 생성하는데 이용된 함수를 식별하는 식별 정보를 포함하고,상기 제외시키는 단계에서, 상기 제외 함수 리스트에 포함된 함수의 식별 정보에 대응하는 식별 정보를 가지는 트레이스 유닛을 상기 타겟 머신 트레이스로부터 제외시키는 소프트웨어의 에러 검출 방법.
- 제11항에 있어서,상기 식별 정보는 함수 이름인 소프트웨어의 에러 검출 방법.
- 제9항에 있어서,상기 시뮬레이션 트레이스 및 상기 타겟 머신 트레이스는 각각 모든 명령어에 대한 실행 정보를 포함하는 데이터 흐름 트레이스 타입, 및 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분을 나타내는 제어 흐름 트레이스 타입 중 적어도 하나의 타입의 트레이스를 가지는 소프트웨어의 에러 검출 방법.
- 제13항에 있어서,상기 데이터 흐름 트레이스 타입의 트레이스 유닛은 명령의 실행 싸이클 시간, 명령어, 오퍼랜드의 주소 및 오퍼랜드를 포함하는 소프트웨어의 에러 검출 방법.
- 제13항에 있어서,상기 제어 흐름 트레이스 타입의 트레이스 유닛은 명령어 수행시 명령어의 위치를 나타내는 주소의 변화가 소정의 임계값 이상되는 부분에 대한 브랜치 주소 및 타겟 주소를 포함하는 소프트웨어의 에러 검출 방법.
- 제13항에 있어서,상기 비교하는 단계는,1차적으로 상기 제어 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하는 단계; 및비교 결과 일치하지 않는 부분에 대하여 2차적으로 상기 데이터 흐름 트레이스 타입의 시뮬레이션 트레이스 및 타겟 머신 트레이스를 비교하는 단계를 포함하는 소프트웨어의 에러 검출 방법.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230060407A (ko) * | 2021-10-27 | 2023-05-04 | 경북대학교 산학협력단 | 비교 신경망 학습을 이용한 소프트웨어의 오동작 검출시스템 및 소프트웨어의 오동작 검출방법 |
Families Citing this family (16)
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)
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 |
-
2009
- 2009-01-15 KR KR1020090003427A patent/KR20100084036A/ko active IP Right Grant
- 2009-12-16 US US12/639,592 patent/US20100180263A1/en not_active Abandoned
Cited By (1)
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 |