KR20150089619A - 실시간 디버깅을 위한 방법 및 장치 - Google Patents

실시간 디버깅을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20150089619A
KR20150089619A KR1020140010474A KR20140010474A KR20150089619A KR 20150089619 A KR20150089619 A KR 20150089619A KR 1020140010474 A KR1020140010474 A KR 1020140010474A KR 20140010474 A KR20140010474 A KR 20140010474A KR 20150089619 A KR20150089619 A KR 20150089619A
Authority
KR
South Korea
Prior art keywords
debugging
code
real
time
point
Prior art date
Application number
KR1020140010474A
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 KR1020140010474A priority Critical patent/KR20150089619A/ko
Publication of KR20150089619A publication Critical patent/KR20150089619A/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/362Software debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 실시간 디버깅을 위한 방법 및 장치에 관한 것으로서, 실시간 디버깅을 위한 디버깅 장치가 개발 어플리케이션에서 버그가 발생하면, 버그를 수정하기 위한 디버깅 지점을 설정하고, 버그를 실시간으로 수정하기 위한 임시 코드를 이용하여 디버깅 지점에서의 실시간 디버깅을 실행하는 디버깅 실행부; 및 개발 어플리케이션의 컴파일 코드를 실행하고, 디버깅 실행부에 의해 디버깅 지점이 설정되면, 디버깅 실행부의 제어에 따라 수정이 필요한 부분에 삽입된 임시 코드를 실행하고, 임시 코드의 실행이 완료되면, 원본 코드로 복귀하는 어플리케이션 실행부를 포함하여 실시간 디버깅을 수행함으로써, 디버깅 중인 환경을 그대로 이용하여 로직(코드)를 직접 테스트할 수 있으며, 로직 수정을 위해 디버깅을 멈추지 않고 변경된 로직인 임시 코드를 실시간으로 적용하여 디버깅에 소요되는 시간을 줄일 수 있으므로 어플리케이션의 개발에 드는 시간을 단축시킴으로써 효율적으로 어플리케이션을 개발할 수 있는 효과가 있다.

Description

실시간 디버깅을 위한 방법 및 장치{REAL TIME DEBUGGING METHOD AND APPARATUS}
본 발명은 실시간 디버깅을 위한 방법 및 장치에 관한 것으로서, 특히 어플리케이션(또는 프로그램)의 모든 동작을 위한 코드를 컴파일하여 디버깅 시 디버깅을 멈추지 않고, 변경된 로직(코드)을 실시간으로 적용하여 실시간 디버깅을 하기 위한 방법 및 장치에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
일반적으로 개발자가 프로그램 또는 어플리케이션 등을 개발하면, 개발된 프로그램은 완벽하지 않기 때문에 오류가 발생하므로 개발자는 개발한 프로그램의 오류를 찾아 수정해야 한다. 이러한 개발 프로그램의 오류를 찾아 수정하는 작업을 디버깅(Debugging)이라 하며, 프로그램 속에 존재하는 오류(에러)를 버그라 한다.
디버깅을 위한 방법으로는 크게 디버거와 같은 보조 프로그램을 이용하는 방법과, 검사용 데이터를 입력하여 오류를 찾아내는 방법이 있다. 이러한 방법을 이용하여 종래의 기술에서는 프로그램의 모든 동작을 위한 코드를 컴파일하여 실행되는 컴파일 코드의 각 로직(코드)에서 사용되는 변수를 확인함으로써 디버깅을 수행하였다.
그러나 종래의 기술에서는 디버깅 수행 시 오류가 발생한 부분을 해결하기 위해 디버깅 동작을 멈춘 후, 변경된 로직을 해당 부분에 적용하여 코드를 수정해야 한다. 그런 다음 종래의 기술에서는 수정된 코드를 다시 컴파일하여 디버깅하던 환경과 유사한 환경을 맞추기 위해 재 시험을 수행해야 한다.
때문에 종래의 디버깅 방법은 디버깅을 위해 많은 시간이 소요되므로 프로그램 개발이 지연되는 문제점 있다.
한국공개특허 제2011-0036154호, 2011년 04월 07일 공개(명칭: 애플리케이션 스토리지 서버 및 그 운용 방법)
본 발명은 종래의 불편함을 해소하기 위하여 제안된 것으로서, 디버깅 장치에서 버그를 수정하기 위한 임시 코드를 입력 받아 입력된 임시 코드를 수정이 필요한 부분에 삽입하고, 디버깅을 멈추지 않고 임시 코드로 점프하여 임시 코드를 실행하고, 임시 코드의 실행이 완료되면, 원본 코드로 복귀하도록 함으로써 실시간 디버깅을 수행하기 위한 방법 및 장치를 제공하고자 한다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 디버깅 장치는, 개발 어플리케이션에서 버그가 발생하면, 버그를 수정하기 위한 디버깅 지점을 설정하고, 상기 버그를 실시간으로 수정하기 위한 임시 코드를 이용하여 상기 디버깅 지점에서의 실시간 디버깅을 실행하는 디버깅 실행부; 및 상기 개발 어플리케이션의 컴파일 코드를 실행하고, 상기 디버깅 실행부에 의해 디버깅 지점이 설정되면, 상기 디버깅 실행부의 제어에 따라 상기 수정이 필요한 부분에 삽입된 상기 임시 코드를 실행하고, 상기 임시 코드의 실행이 완료되면, 원본 코드로 복귀하는 어플리케이션 실행부를 포함할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치는, 상기 개발 어플리케이션에 대한 데이터를 별도의 저장 공간에 저장하고, 상기 디버깅 실행부에서 상기 실시간 디버깅을 수행하기 위한 실시간 디버깅 툴에 대한 데이터를 별도의 저장 공간에 저장하는 저장부를 더 포함할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치에 있어서, 상기 저장부는, 상기 디버깅 실행부에서 입력된 임시 코드의 컴파일된 데이터를 기 설정된 디버깅 프로세서의 메모리에 저장할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치는, 상기 개발 어플리케이션의 실시간 디버깅 툴의 실행 화면을 출력하고, 상기 어플리케이션 실행부에서 실행되는 상기 개발 어플리케이션의 컴파일 코드의 실행 데이터를 상기 실행 화면에 출력하고, 상기 임시 코드의 컴파일 데이터 및 상기 어플리케이션 실행부에서 실행되는 상기 임시 코드의 실행 데이터를 상기 실행 화면에 출력하는 출력부를 더 포함할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치에 있어서, 상기 디버깅 실행부는, 상기 개발 어플리케이션의 실시간 디버깅을 위한 실시간 디버깅 툴의 실행을 제어하고, 상기 실시간 디버깅 툴의 실행 화면을 통해 개발자로부터 상기 임시 코드를 입력받고, 입력된 임시 코드를 컴파일하는 실시간 디버깅 지원 모듈; 및 버그가 발생하면, 현재 실행 중인 컴파일 코드에서 상기 버그를 수정하기 위한 디버깅 지점을 설정하고, 설정된 디버깅 지점의 실시간 디버깅을 수행하기 위해 상기 실시간 디버깅 지원 모듈에서 컴파일된 임시 코드를 수정이 필요한 부분에 삽입하는 디버깅 프로세스를 포함할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치에 있어서, 상기 디버깅 프로세스는, 상기 컴파일 코드에 대한 디버그 심볼에 포함된 소스코드 상의 위치에서 메모리 주소를 검출하여 디버깅 지점 명령을 설정하고, 설정된 디버깅 지점 명령을 상기 어플리케이션 실행부로 전송할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치에 있어서, 상기 디버깅 프로세스는, 상기 임시 코드를 디버깅 프로세서 메모리 스택에 현재의 레지스터 값을 저장하고, 상기 레지스터 값이 저장된 상기 디버깅 프로세스 메모리로 디버깅 장치의 명령을 변경하는 루틴을 상기 수정이 필요한 부분에 삽입할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치에 있어서, 상기 어플리케이션 실행부는, 상기 개발 어플리케이션의 컴파일 코드를 실행하고, 상기 설정된 디버깅 지점에 삽입된 임시 코드를 실행하고, 상기 원본 코드로 복귀되면, 복귀된 원본 코드를 실행하는 어플리케이션 프로세스를 포함할 수 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 디버깅 장치에서의 실시간 디버깅을 위한 방법은, 개발 어플리케이션의 컴파일 코드를 실행하는 단계; 상기 실행되는 컴파일 코드에서 버그가 발생하면, 상기 컴파일 코드에서 디버깅 지점을 설정하는 단계; 상기 버그 수정을 위해 입력된 임시 코드를 이용하여 상기 디버깅 지점에서의 실시간 디버깅을 수행하는 단계; 및 상기 임시 코드를 이용한 상기 버그 수정이 완료되면, 원본 코드로 복귀하는 단계를 포함할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치에서의 실시간 디버깅을 위한 방법에 있어서, 상기 버그 수정을 위해 입력된 임시 코드를 이용하여 상기 디버깅 지점에서의 실시간 디버깅을 수행하는 단계는, 상기 디버깅 지점에 삽입할 임시 코드를 입력받는 단계; 입력된 임시 코드를 컴파일하는 단계; 상기 임시 코드를 상기 디버깅 지점에서 수정이 필요한 부분에 삽입하는 단계; 및 현재 실행되는 컴파일 코드에서 삽입된 상기 임시 코드로 점프하여 상기 삽입된 임시 코드를 실행하는 단계를 포함할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치에서의 실시간 디버깅을 위한 방법에 있어서, 상기 임시 코드를 상기 디버깅 지점에서 수정이 필요한 부분에 삽입하는 단계는, 상기 임시 코드를 디버깅 프로세서 메모리에 현재의 레지스터 값을 저장하는 단계; 및 상기 레지스터 값이 저장된 상기 디버깅 프로세스 메모리로 디버깅 장치의 명령을 변경하는 루틴을 상기 디버깅 지점에 삽입하는 단계를 포함할 수 있다.
본 발명의 바람직한 실시예에 따른 디버깅 장치에서의 실시간 디버깅을 위한 방법에 있어서, 상기 컴파일 코드에서 디버깅 지점을 설정하는 단계는, 상기 실행되는 컴파일 코드에서 버그가 발생하면, 실시간 지원 모듈에서 디버그 이벤트를 발생하는 단계; 디버깅 프로세스에서 디버그 이벤트에 따라 상기 컴파일 코드에 대한 디버그 심볼을 이용하여 소스코드 상의 메모리 주소를 검출하는 단계; 검출된 메모리 주소를 이용하여 디버깅 지점의 명령을 설정하는 단계; 및 설정된 디버깅 지점 명령을 상기 개발 어플리케이션을 실행하기 위한 어플리케이션 프로세스로 전송하는 단계를 포함할 수 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 컴퓨터에서 판독 가능한 기록 매체는 실시간 디버깅을 위한 방법을 실행하기 위한 프로그램이 기록되어 있다.
본 발명은 디버깅 대상인 어플리케이션에서 버그가 발생하면, 발생된 버그를 수정하기 위한 임시 코드를 입력받아 수정이 필요한 부분에 임시 코드를 삽입하여 실행함에 따라 디버깅 중인 환경을 그대로 이용하여 로직(코드)을 직접 테스트할 수 있다.
또한, 본 발명은 로직 수정을 위해 디버깅을 멈추지 않고 변경된 로직인 임시 코드를 실시간으로 적용하여 디버깅에 소요되는 시간을 줄일 수 있으므로 어플리케이션의 개발에 드는 시간을 단축시킴으로써 효율적으로 어플리케이션을 개발할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 실시간 디버깅을 위한 디버깅 장치의 구성을 도시한 도면이다.
도 2는 본 발명의 실시예에 따른 실시간 디버깅을 위한 디버깅 장치의 세부 구성을 도시한 도면이다.
도 3은 본 발명의 실시예에 따른 디버깅 장치에서의 실시간 디버깅을 위한 방법을 도시한 도면이다.
이하, 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.
이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.
우선, 본 발명의 실시예에 따른 실시간 디버깅을 위한 디버깅 장치에 대해 첨부된 도면을 참조하여 구체적으로 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 실시간 디버깅을 위한 디버깅 장치의 구성을 도시한 도면이다.
도 1을 참조하면, 디버깅 장치(100)는 다양한 어플리케이션 및 프로그램 등을 실행할 수 있는 운영체제를 포함하는 컴퓨팅 장치를 말하는 것이며, 태블릿 PC(Tablet PC), 랩톱(Laptop), 개인용 컴퓨터(PC: Personal Computer), 스마트폰(Smart Phone), 개인휴대용 정보단말기(PDA: Personal Digital Assistant), 스마트 TV 및 이동통신 단말기(Mobile Communication Terminal) 등 중 어느 하나일 수 있다. 특히, 본 발명의 실시예에 따른 디버깅 장치(100)는 개발자가 개발한 어플리케이션 또는 프로그램을 업로드 하면, 개발 어플리케이션 또는 프로그램의 모든 동작을 위한 코드를 코딩 즉, 컴파일하여 컴파일된 코드를 실행하여 테스트를 수행할 수 있다. 이때, 디버깅 장치(100)는 테스트되는 컴파일 코드에서 잘못된 부분을 찾아 수정하기 위한 디버깅을 수행할 수 있다. 이러한 디버깅 시 디버깅 장치(100)는 컴파일 코드에서 오류가 발생 즉, 디버그 이벤트가 발생하면, 디버깅 도구를 통해 디비깅을 수행하는데, 디버깅을 멈추지 않고, 변경된 로직(임시 코드)를 실시간으로 적용하여 실시간 디버깅을 수행할 수 있다. 여기서, 디버깅 대상은 어플리케이션 또는 프로그램 등이 될 수 있으며, 이하, 본 발명의 실시예에서는 어플리케이션을 예를 들어 설명하기로 한다.
이러한 디버깅 장치(100)는 입력부(110), 디버깅 실행부(120), 어플리케이션 실행부(130), 저장부(140) 및 출력부(150)를 포함하여 구성될 수 있다.
입력부(110)는 개발자의 조작에 따라서 개발자의 요청이나 정보에 해당하는 개발자 입력 신호를 발생할 수 있다. 또한, 입력부(110)는 현재 상용화되어 있거나 향후 상용화가 가능한 다양한 입력 수단으로 구현될 수 있으며, 예를 들면, 키보드, 마우스, 조이스틱, 터치 스크린, 터치 패드 등과 같은 일반적인 입력 장치뿐만 아니라, 개발자의 모션을 감지하여 특정 입력 신호를 발생하는 제스처 입력 수단을 포함할 수 있다. 특히 본 발명의 실시예에 따른 입력부(110)는 디버깅 실행부(120)와 연동하여 실시간 디버깅을 위한 실시간 디버깅 툴의 실행 화면의 입력창을 통해 입력되는 정보들에 대한 입력 신호를 발생할 수 있다. 예를 들어, 입력부(110)는 실행 화면의 입력창을 통해 버그 수정을 위한 변경된 로직인 임시 코드를 입력 받아 이에 따른 입력 신호를 발생할 수 있다.
디버깅 실행부(120)는 개발 어플리케이션에서 버그가 발생하면, 버그를 수정하기 위한 디버깅 지점을 설정하고, 버그를 실시간으로 수정하기 위한 임시 코드를 이용하여 디버깅 지점에서의 실시간 디버깅을 실행할 수 있다. 이러한 디버깅 실행부(120)는 실시간 디버깅을 위한 실시간 디버깅 툴을 통해 디버깅을 실행할 수 있으며, 컴퓨터 등의 중앙 처리 장치(CPU: Central Processing Unit)에서 별도의 프로세스를 통해 동작할 수 있다.
이러한 디버깅 실행부(120)는 첨부된 도 2에 도시된 바와 같이, 실시간 디버깅 실행을 위한 툴로 이루어진 실시간 디버깅 환경의 실시간 디버깅 지원 모듈(121) 및 디버깅을 위한 프로그램 실행 및 실행 프로그램의 처리를 위한 디버깅 프로세스(122)를 포함하여 구성될 수 있다. 여기서, 디버깅 프로세스(122)는 디버깅 장치(100)의 중앙처리장치(CPU)에서 처리되나, 별도의 프로세스로 동작하게 되며, 저장부(140)에 별도의 메모리를 구성하여 구성된 메모리에 필요한 정보 등을 저장할 수 있다.
실시간 디버깅 지원 모듈(121)은 실시간 디버깅 툴의 실행을 제어하고, 실시간 디버깅 툴의 실행 화면을 통해 개발자로부터 임시 코드를 입력받고, 입력된 임시 코드를 컴파일할 수 있다. 이러한 실시간 디버깅 지원 모듈(121)은 디버깅 프로세스(122)를 지원하기 위한 기능을 제공하는 예를 들어, 윈도우(Windows) 커널 등과 같은 운영체제이다. 또한 실시간 디버깅 지원 모듈(121)은 어플리케이션 실행부(130)에서 디버그 트랩(Debug trap)을 발생하면, 이를 감지하여 디버깅 프로세스로 디버그 이벤트(Debug event)를 발생할 수 있다.
디버깅 프로세스(122)는 디버깅 대상인 개발 어플리케이션을 실행하는 어플리케이션 프로세스(131)의 메모리를 읽고 쓸 수 있으며, 디버깅 이벤트 발생에 따라 이에 해당하는 기능을 수행하는 프로그램이다. 이러한 디버깅 프로세스(122)는 어플리케이션 프로세스(131)를 새로 시작하거나 이미 수행중인 어플리케이션 프로세스(131)와의 연결(attach)을 수행한다. 그리고 디버깅 프로세스(122)는 디버깅 이벤트 발생을 대기하고, 디버깅 이벤트가 발생하면, 해당 디버깅 이벤트를 처리하는 과정을 반복 루푸(디버거 루푸: Debugger loop)를 이용하여 반복 수행할 수 있다.
특히, 디버깅 프로세스(122)는 버그 즉, 디버깅 이벤트가 발생하면, 현재 실행 중인 컴파일 코드에서 상기 버그를 수정하기 위한 디버깅 지점을 설정하고, 설정된 디버깅 지점의 실시간 디버깅을 수행할 수 있다. 이를 위해 디버깅 프로세스(122)는 컴파일 코드에 대한 디버그 심볼에 포함된 소스코드 상의 위치에서 메모리 주소를 검출하여 디버깅 지점 명령을 설정하고, 설정된 디버깅 지점 명령을 어플리케이션 프로세스(131)로 전송할 수 있다. 그리고 디버깅 프로세스(122)는 실시간 디버깅 지원 모듈(121)에서 전달된 컴파일된 임시 코드를 디버깅 지점에서 수정이 필요한 부분에 삽입할 수 있다. 구체적으로, 디버깅 프로세스(122)는 임시코드를 함수의 실행 형태의 코드로서, 임시 코드를 디버깅 프로세서 메모리 스택에 현재의 레지스터 값으로 저장한다. 그리고 디버깅 프로세스(122)는 임시 코드로 진입(점프)하기 위하여 레지스터 값이 저장된 디버깅 프로세스 메모리로 디버깅 장치(100)의 명령을 변경하는 루틴을 수정이 필요한 부분에 삽입할 수 있다.
다음으로, 어플리케이션 실행부(130)는 첨부된 도 2에 도시된 바와 같이, 개발 어플리케이션을 실행하기 위한 어플리케이션 프로세스(131)를 포함하여 구성될 수 있으며, 개발 어플리케이션에 대한 실시간 디버깅을 위해 디버깅 실행부(120)와 연동할 수 있다. 여기서, 어플리케이션 프로세스(131)는 디버깅 장치(100)의 중앙처리장치(CPU)에서 처리되나, 별도의 프로세스로 동작하게 되며, 저장부(140)에 별도의 메모리를 구성하여 구성된 메모리에 필요한 정보 등을 저장할 수 있다.
특히, 어플리케이션 프로세스(131)은 어플리케이션 프로세스(131)를 통해 개발 어플리케이션을 실행 즉, 개발된 코드들을 컴파일한 컴파일 코드를 실행하고, 디버깅 프로세스(122)에 의해 디버깅 지점이 설정되면, 디버깅 프로세스(122)로부터 이에 대한 명령 신호를 수신할 수 있다. 그리고 어플리케이션 프로세스(131)는 디버깅 프로세스(122)로부터 임시 코드가 삽입되면, 현재 실행되는 컴파일 코드에서 임시 코드로 점프하여 임시 코드를 실행할 수 있다. 또한, 어플리케이션 프로세스(131)는 임시 코드의 실행이 완료되면, 원본 코드로 복귀하여 복귀된 원본 코드(컴파일 코드)를 실행할 수 있다.
저장부(140)는 디버깅 장치(100)의 동작에 필요한 정보들을 저장하며, 특히, 개발 어플리케이션에 대한 데이터를 별도의 저장 공간에 저장하고, 상기 디버깅 실행부(120)에서 실시간 디버깅을 수행하기 위한 실시간 디버깅 툴에 대한 데이터를 별도의 저장 공간에 저장할 수 있다. 또한, 저장부(140)는 디버깅 실행부(120)에서 입력된 임시 코드의 컴파일된 데이터를 기 설정된 디버깅 프로세서의 메모리에 저장할 수 있으며, 어플리케이션 프로세스(131)에서 복사한 정보를 개발자에게 제공하기 위해 디버깅 실행부(120)가 접근할 수 있는 별도의 저장 공간에 저장할 수 있다. 이러한 저장부(140)는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media) 및 롬(ROM), 램(RAM, Random Access Memory), 플래시 메모리를 포함한다.
출력부(150)는 디버깅 장치(100)의 동작 결과나 상태를 개발자가 인식할 수 있도록 제공하는 수단으로서, 예를 들면, 화면을 통해 시각적으로 출력하는 표시부나, 가청음을 출력하는 스피커 등을 포함할 수 있다. 특히, 본 발명에 있어서, 출력부(150)는 디버깅 장치(100)에서 구동되는 실시간 디버깅에 관련된 화면을 표시하기 위해 개발 어플리케이션의 실시간 디버깅 툴의 실행 화면을 출력할 수 있다. 그리고 출력부(150)는 어플리케이션 실행부(130)에서 실행되는 개발 어플리케이션의 컴파일 코드의 실행 데이터를 실행 화면에 출력하고, 임시 코드의 컴파일 데이터 및 어플리케이션 실행부(130)에서 실행되는 임시 코드의 실행 데이터를 실행 화면에 출력할 수 있다.
그러면, 이와 같이 구성된 디버깅 장치에서 실시간 디버깅을 위한 방법에 대해 첨부된 도면을 참조하여 구체적으로 설명하기로 한다.
도 3은 본 발명의 실시예에 따른 디버깅 장치에서의 실시간 디버깅을 위한 방법을 도시한 도면이다.
도 3을 참조하면, 1101단계에서 디버깅 장치(100)는 개발 어플리케이션을 실행 즉, 개발한 컴파일 코드를 실행한다. 이때, 어플리케이션 프로세스(131)에서 디버그 트랩이 발생하여 실시간 디버깅 지원 모듈(121)이 디버그 이벤트를 발생하면, 즉, 실행되는 컴파일 코드에서 버그가 발생하면, 1102단계에서 디버깅 장치(100)는 디버깅 프로세스(122)를 통해 컴파일 코드에서 디버깅 지점을 설정한다. 이때, 디버깅 프로세스(122)는 어플리케이션 프로세스(131)로 디버깅 지점 설정 명령 신호를 전송한다.
이에 따라 1103단계에서 디버깅 장치(100)는 설정된 디버깅 지점에서의 디버깅을 시작하고, 반복 루프를 통해 코드들의 디버깅을 수행한다. 이때, 실시간 디버깅 지원 모듈(121)에서 실행되는 실시간 디버깅 툴의 실행 화면을 통해 버그를 수정하기 위한 임시 코드를 입력 받는다. 그러면 1104단계에서 디버깅 장치(100)는 실시간 디버깅 지원 모듈(121)을 통해 입력된 임시 코드를 컴파일한다.
그런 다음 1105단계에서 디버깅 장치(100)의 실시간 디버깅 지원 모듈(121)은 디버깅 프로세스(122)로 컴파일된 임시 코드를 전송하고, 1106단계에서 컴파일된 임시 코드를 디버깅 프로세스 메모리에 저장(load)한다.
그런 다음 1107단계에서 디버깅 장치(100)는 디버깅 프로세스(122)를 통해 디버깅 지점에서 수정이 필요한 부분에 컴파일된 임시 코드를 삽입한다. 여기서, 디버깅 프로세스(122)는 임시 코드를 수정이 필요한 부분에 삽입하기 위해, 임시 코드를 디버깅 프로세서 메모리 스택에 현재의 레지스터 값을 저장하고, 레지스터 값이 저장된 디버깅 프로세스 메모리로 디버깅 장치의 명령을 변경하는 루틴을 수정이 필요한 부분에 삽입한다.
이후, 1108단계에서 디버깅 장치(100)는 어플리케이션 프로세스(131)에서 현재 실행중인 컴파일 코드에서 삽입된 임시 코드로 점프하고, 1109단계에서 점프된 임시 코드를 실행하여 테스트한다. 이때, 실시간 디버깅 툴 실행 화면에는 실행중인 컴파일 코드가 표시되었다가 임시 코드 삽입 즉, 임시 코드가 로드된 디버깅 프로세스 메모리의 점프 루틴에 따라 임시 코드가 실행 화면에 표시된다. 이에 따라 개발자는 실행 화면에 표시된 임시 코드를 확인하여 잘못된 부분이 있는지를 확인할 수 있다.
그런 다음 1109단계에서 디버깅 장치(100)는 어플리케이션 프로세스(131)에서 임시 코드를 이용한 상기 버그 수정이 완료 즉, 임시 코드의 실행이 완료되면 원본 코드로 복귀하여 원본 코드 즉, 컴파일 코드를 실행하고, 디버깅 프로세스(122)에서는 실행되는 컴파일 코드를 테스트하여 디버깅 이벤트 발생을 대기함으로써 또 다른 오류가 있는지를 확인할 수 있다.
이와 같은 실시간 디버깅을 위한 방법에 따라 개발자가 개발한 어플리케이션을 테스트하여 오류를 찾는 디버깅 작업 시 디버깅 장치(100)는 변경된 코드인 임시 코드를 입력받아 버그가 발생 즉, 수정이 필요한 부분에 삽입하여 변경된 코드를 테스트할 수 있다. 이에 따라 디버깅 장치(100)는 디버깅을 멈추고 버그를 수정하지 않고, 실시간으로 버그 수정 작업을 수행할 수 있다.
한편, 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 및 롬(ROM), 램(RAM, Random Access Memory), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
또한, 본 발명에 따른 장치에 탑재되고 본 발명에 따른 방법을 실행하는 컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 혹은 코드로도 알려져 있음)은 컴파일 되거나 해석된 언어나 선험적 혹은 절차적 언어를 포함하는 프로그래밍 언어의 어떠한 형태로도 작성될 수 있으며, 독립형 프로그램이나 모듈, 컴포넌트, 서브루틴 혹은 컴퓨터 환경에서 사용하기에 적합한 다른 유닛을 포함하여 어떠한 형태로도 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 요청된 프로그램에 제공되는 단일 파일 내에, 혹은 다중의 상호 작용하는 파일(예컨대, 하나 이상의 모듈, 하위 프로그램 혹은 코드의 일부를 저장하는 파일) 내에, 혹은 다른 프로그램이나 데이터를 보유하는 파일의 일부(예컨대, 마크업 언어 문서 내에 저장되는 하나 이상의 스크립트) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐서 분산되어 통신 네트워크에 의해 상호 접속된 다중 컴퓨터나 하나의 컴퓨터 상에서 실행되도록 전개될 수 있다.
한편, 본 명세서와 도면에 개시된 본 발명의 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.
또한, 본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징될 수 있다는 점을 이해하여야 한다.
본 발명은 실시간 디버깅을 위한 방법 및 장치에 관한 것으로, 디버깅 대상인 어플리케이션에서 버그가 발생하면, 발생된 버그를 수정하기 위한 임시 코드를 입력받아 수정이 필요한 부분에 임시 코드를 삽입하여 실행함에 따라 디버깅 중인 환경을 그대로 이용하여 로직(코드)를 직접 테스트할 수 있다.
또한, 본 발명은 로직 수정을 위해 디버깅을 멈추지 않고 변경된 로직인 임시 코드를 실시간으로 적용하여 디버깅에 소요되는 시간을 줄일 수 있으므로 어플리케이션의 개발에 드는 시간을 단축시킴으로써 효율적으로 어플리케이션을 개발할 수 있는 효과가 있다.
아울러, 본 발명은 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있다.
100: 디버깅 장치 110: 입력부 120: 디버깅 실행부
121: 실시간 디버깅 지원 모듈 122: 디버깅 프로세스
130: 어플리케이션 실행부 131: 어플리케이션 프로세스
140: 저장부 150: 출력부

Claims (13)

  1. 개발 어플리케이션에서 버그가 발생하면, 버그를 수정하기 위한 디버깅 지점을 설정하고, 상기 버그를 실시간으로 수정하기 위한 임시 코드를 이용하여 상기 디버깅 지점에서의 실시간 디버깅을 실행하는 디버깅 실행부; 및
    상기 개발 어플리케이션의 컴파일 코드를 실행하고, 상기 디버깅 실행부에 의해 디버깅 지점이 설정되면, 상기 디버깅 실행부의 제어에 따라 상기 수정이 필요한 부분에 삽입된 상기 임시 코드를 실행하고, 상기 임시 코드의 실행이 완료되면, 원본 코드로 복귀하는 어플리케이션 실행부;
    를 포함하는 것을 특징으로 하는 디버깅 장치.
  2. 제1항에 있어서,
    상기 개발 어플리케이션에 대한 데이터를 별도의 저장 공간에 저장하고, 상기 디버깅 실행부에서 상기 실시간 디버깅을 수행하기 위한 실시간 디버깅 툴에 대한 데이터를 별도의 저장 공간에 저장하는 저장부;
    를 더 포함하는 것을 특징으로 하는 디버깅 장치.
  3. 제2항에 있어서, 상기 저장부는,
    상기 디버깅 실행부에서 입력된 임시 코드의 컴파일된 데이터를 기 설정된 디버깅 프로세서의 메모리에 저장하는 것을 특징으로 하는 디버깅 장치.
  4. 제1항에 있어서,
    상기 개발 어플리케이션의 실시간 디버깅 툴의 실행 화면을 출력하고, 상기 어플리케이션 실행부에서 실행되는 상기 개발 어플리케이션의 컴파일 코드의 실행 데이터를 상기 실행 화면에 출력하고, 상기 임시 코드의 컴파일 데이터 및 상기 어플리케이션 실행부에서 실행되는 상기 임시 코드의 실행 데이터를 상기 실행 화면에 출력하는 출력부;
    를 더 포함하는 것을 특징으로 하는 디버깅 장치.
  5. 제1항에 있어서, 상기 디버깅 실행부는,
    상기 개발 어플리케이션의 실시간 디버깅을 위한 실시간 디버깅 툴의 실행을 제어하고, 상기 실시간 디버깅 툴의 실행 화면을 통해 개발자로부터 상기 임시 코드를 입력받고, 입력된 임시 코드를 컴파일하는 실시간 디버깅 지원 모듈; 및
    버그가 발생하면, 현재 실행 중인 컴파일 코드에서 상기 버그를 수정하기 위한 디버깅 지점을 설정하고, 설정된 디버깅 지점의 실시간 디버깅을 수행하기 위해 상기 실시간 디버깅 지원 모듈에서 컴파일된 임시 코드를 수정이 필요한 부분에 삽입하는 디버깅 프로세스;
    를 포함하는 것을 특징으로 하는 디버깅 장치.
  6. 제5항에 있어서, 상기 디버깅 프로세스는,
    상기 컴파일 코드에 대한 디버그 심볼에 포함된 소스코드 상의 위치에서 메모리 주소를 검출하여 디버깅 지점 명령을 설정하고, 설정된 디버깅 지점 명령을 상기 어플리케이션 실행부로 전송함을 특징으로 하는 디버깅 장치.
  7. 제5항에 있어서, 상기 디버깅 프로세스는,
    상기 임시 코드를 디버깅 프로세서 메모리에 현재의 레지스터 값을 저장하고, 상기 레지스터 값이 저장된 상기 디버깅 프로세스 메모리로 디버깅 장치의 명령을 변경하는 루틴을 상기 수정이 필요한 부분에 삽입함을 특징으로 하는 디버깅 장치.
  8. 제1항에 있어서, 상기 어플리케이션 실행부는,
    상기 개발 어플리케이션의 컴파일 코드를 실행하고, 상기 설정된 디버깅 지점에 삽입된 임시 코드를 실행하고, 상기 원본 코드로 복귀되면, 복귀된 원본 코드를 실행하는 어플리케이션 프로세스를 포함하는 것을 특징으로 하는 디버깅 장치.
  9. 개발 어플리케이션의 컴파일 코드를 실행하는 단계;
    상기 실행되는 컴파일 코드에서 버그가 발생하면, 상기 컴파일 코드에서 디버깅 지점을 설정하는 단계;
    상기 버그 수정을 위해 입력된 임시 코드를 이용하여 상기 디버깅 지점에서의 실시간 디버깅을 수행하는 단계; 및
    상기 임시 코드를 이용한 상기 버그 수정이 완료되면, 원본 코드로 복귀하는 단계;
    를 포함하는 것을 특징으로 하는 디버깅 장치에서의 실시간 디버깅을 위한 방법.
  10. 제9항에 있어서, 상기 버그 수정을 위해 입력된 임시 코드를 이용하여 상기 디버깅 지점에서의 실시간 디버깅을 수행하는 단계는,
    상기 디버깅 지점에 삽입할 임시 코드를 입력받는 단계;
    입력된 임시 코드를 컴파일하는 단계;
    상기 임시 코드를 상기 디버깅 지점에서 수정이 필요한 부분에 삽입하는 단계; 및
    현재 실행되는 컴파일 코드에서 삽입된 상기 임시 코드로 점프하여 상기 삽입된 임시 코드를 실행하는 단계;
    를 포함하는 것을 특징으로 하는 디버깅 장치에서의 실시간 디버깅을 위한 방법.
  11. 제10항에 있어서, 상기 임시 코드를 상기 디버깅 지점에서 수정이 필요한 부분에 삽입하는 단계는,
    상기 임시 코드를 디버깅 프로세서 메모리에 현재의 레지스터 값을 저장하는 단계; 및
    상기 레지스터 값이 저장된 상기 디버깅 프로세스 메모리로 디버깅 장치의 명령을 변경하는 루틴을 상기 디버깅 지점에 삽입하는 단계;
    를 포함하는 것을 특징으로 하는 디버깅 장치에서의 실시간 디버깅을 위한 방법.
  12. 제9항에 있어서, 상기 컴파일 코드에서 디버깅 지점을 설정하는 단계는,
    상기 실행되는 컴파일 코드에서 버그가 발생하면, 실시간 지원 모듈에서 디버그 이벤트를 발생하는 단계;
    디버깅 프로세스에서 디버그 이벤트에 따라 상기 컴파일 코드에 대한 디버그 심볼을 이용하여 소스코드 상의 메모리 주소를 검출하는 단계;
    검출된 메모리 주소를 이용하여 디버깅 지점의 명령을 설정하는 단계; 및
    설정된 디버깅 지점 명령을 상기 개발 어플리케이션을 실행하기 위한 어플리케이션 프로세스로 전송하는 단계;
    를 포함하는 것을 특징으로 하는 디버깅 장치에서의 실시간 디버깅을 위한 방법.
  13. 제9항 내지 제12항 중 어느 하나에 기재된 실시간 디버깅을 위한 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020140010474A 2014-01-28 2014-01-28 실시간 디버깅을 위한 방법 및 장치 KR20150089619A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140010474A KR20150089619A (ko) 2014-01-28 2014-01-28 실시간 디버깅을 위한 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140010474A KR20150089619A (ko) 2014-01-28 2014-01-28 실시간 디버깅을 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20150089619A true KR20150089619A (ko) 2015-08-05

Family

ID=53886031

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140010474A KR20150089619A (ko) 2014-01-28 2014-01-28 실시간 디버깅을 위한 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20150089619A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180131819A (ko) * 2017-06-01 2018-12-11 임정수 디바이스의 실시간 프로그램 개발 장치와 실시간 프로그래밍 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180131819A (ko) * 2017-06-01 2018-12-11 임정수 디바이스의 실시간 프로그램 개발 장치와 실시간 프로그래밍 방법

Similar Documents

Publication Publication Date Title
US10261889B2 (en) Techniques for edit-and-continue and enhanced optimized debugging on optimized code
US9819758B2 (en) Remote debugging into mobile web applications across devices
CN107832059B (zh) 一种基于Makefile的代码静态分析方法和装置
CN106909498B (zh) 一种Java程序注入故障的方法和系统
US8762967B2 (en) Program compiler, program installer, and program install method
US20130318498A1 (en) Method and apparatus for mobile application development and testing that avoids repackaging and reinstallation
US20150234736A1 (en) Testing optimized binary modules
CN109726135B (zh) 一种多核调试方法、装置及计算机可读存储介质
US20100180263A1 (en) Apparatus and method for detecting software error
US20150113512A1 (en) Speculative object representation
US20110154299A1 (en) Apparatus and method for executing instrumentation code
EP2706459B1 (en) Apparatus and method for validating a compiler for a reconfigurable processor
US9645911B2 (en) System and method for debugging firmware/software by generating trace data
CA2821522A1 (en) Method for checkpointing and restoring program state
US9235389B2 (en) Method of providing embedded software development tool for supporting embedded software development environment based on native building, and apparatus thereof
US9141351B2 (en) Indicators for resources with idempotent close methods in software programs
US20170075789A1 (en) Method and apparatus for generating, capturing, storing, and loading debug information for failed tests scripts
CN106681783A (zh) 一种svn代码检测方法及其系统
US20090125895A1 (en) Re-Using Legacy Libraries in Software
US20110209004A1 (en) Integrating templates into tests
CN109284222B (zh) 软件单元、数据处理系统中的项目测试方法、装置及设备
US9141343B2 (en) Indicators for resources with close methods that do not complete erroneously in software programs
US10133652B2 (en) Debugging optimized code using FAT binary
KR20150089619A (ko) 실시간 디버깅을 위한 방법 및 장치
US11256479B2 (en) Dynamic updates in an interactive programming environment

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application