KR100503429B1 - Real-time debugging method - Google Patents
Real-time debugging method Download PDFInfo
- Publication number
- KR100503429B1 KR100503429B1 KR10-2003-0087484A KR20030087484A KR100503429B1 KR 100503429 B1 KR100503429 B1 KR 100503429B1 KR 20030087484 A KR20030087484 A KR 20030087484A KR 100503429 B1 KR100503429 B1 KR 100503429B1
- Authority
- KR
- South Korea
- Prior art keywords
- debugging
- class
- function
- debugged
- designing
- Prior art date
Links
Classifications
-
- 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/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 스마트 카드 운영체제 개발에 있어 실시간으로 소스코드를 디버깅 할 수 있는 방법으로 적어도 하나 이상의 디버깅 메소드를 포함하는 디버깅 클래스를 설계하고 디버깅하고자 하는 패키지의 클래스에 디버깅 메소드를 호출하는 디버깅 함수를 추가한 후, 디버깅 메소드와 native interface로 연결되며 디버깅 메소드의 동작을 실제 수행하는 디버깅 함수를 설계하는 과정으로 구성된다. 본 발명은 시뮬레이터 및 에뮬레이터 개발환경 모두에서 편리하게 사용할 수 있는 디버깅 방식으로 소스 코드를 실시간으로 디버깅할 수 있으며, 특히 스마트 카드 운영체제 개발환경에서 스마트 카드의 각 모듈 언어의 상이함으로 인한 디버깅의 불편함을 해소할 수 있다. The present invention is a method for debugging source code in real time in the development of smart card operating system designing a debugging class including at least one debugging method and adding a debugging function to call the debugging method to the class of the package to debug After that, it is connected to debugging method and native interface, and it consists of designing debugging function that actually performs the operation of debugging method. The present invention can debug source code in real time in a debugging method that can be conveniently used in both a simulator and an emulator development environment, and in particular, the inconvenience of debugging due to the difference of each module language of a smart card in a smart card operating system development environment. I can eliminate it.
Description
본 발명은 실시간 디버깅 방법에 관한 것으로, 보다 상세하게는 스마트 카드의 운영체제 개발환경에서 실시간으로 소스 코드를 디버깅하는 방법에 관한 것이다.The present invention relates to a real-time debugging method, and more particularly, to a method for debugging source code in real time in the operating system development environment of the smart card.
일반적으로, 개방형 구조를 갖는 스마트 카드는 최상위에 위치하는 카드 응용 프로그램, API(Application Programming Interface), VM(Virtual Machine), COS(Card Operating System) 및 H/W로 계층이 나뉘어진다. 일례로, 자바 카드는 하드웨어(실리콘 칩)위에 카드 운영체제(Card Operating System:COS)가 올라가고 자바 카드의 특성을 반영하는 자바 카드 가상 기계(Java Card Virtual Machine:JCVM)가 탑재된다. 또한, 자바 카드 응용 프로그램인 자바 카드 애플릿을 구동시키기 위해 자바 카드 API가 제공되고, COS단에서 제공되는 function들을 자바 카드 가상 기계나 자바 카드 애플릿이 불러 쓰도록 하기위해 native-interface와 기타 추가된 기능에 대한 API도 제공된다. In general, a smart card having an open structure is divided into a card application, an API (Application Programming Interface), a virtual machine (VM), a card operating system (COS), and a hardware. For example, a Java card includes a Java Card Virtual Machine (JCVM) on which a Card Operating System (COS) is mounted on a hardware (silicon chip) and reflects the characteristics of the Java Card. Also, Java Card API is provided to run Java Card Applet, a Java Card application, and native-interface and other added functions to enable Java Card virtual machine or Java Card Applet to call functions provided by COS. An API for is also provided.
이러한 자바 카드의 경우 API는 자바 언어로 설계하는 반면 자바 카드 가상기계, 카드 운영체제는 C언어로 설계하여 이용하기도 하는데, 이런 경우 카드 운영 체제 개발자들은 프로그래밍 언어의 상이성으로 인해 API레벨에 위치한 클래스의 변수 및 배열 값을 개발 환경에서 실시간으로 디버깅하는 데 불편함을 겪게 된다.In the case of Java cards, API is designed in Java language, while Java card virtual machine and card operating system are designed and used in C language. You may find it inconvenient to debug variables and array values in real time in the development environment.
본 발명이 이루고자 하는 기술적 과제는, 스마트 카드의 운영체제 개발환경에서 API와 가상 기계, 카드 운영체제 등의 프로그래밍 언어의 상이함으로 인한 디버깅의 불편함을 해소하고 스마트 카드의 운영체제 개발 환경에서 소스 코드를 실시간으로 디버깅할 수 있는 방법을 제공하는 데 있다.The technical problem to be solved by the present invention is to solve the inconvenience of debugging due to the difference of programming language such as API, virtual machine, card operating system, etc. in the operating system development environment of smart card, and source code in the operating system development environment of smart card in real time To provide a way to debug.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 소스 코드 실시간 디버깅 방법의 일 실시예는, 적어도 하나 이상의 디버깅 메소드를 포함하는 디버깅 클래스를 설계하는 단계; 디버깅하고자 하는 패키지의 클래스에 상기 디버깅 메소드를 추가하는 단계; 및 상기 디버깅 메소드와 native interface로 연결되며 상기 디버깅 메소드의 동작을 실제 수행하는 디버깅 함수를 설계하는 단계;를 포함한다.In order to achieve the above technical problem, an embodiment of a source code real-time debugging method according to the present invention, the step of designing a debugging class including at least one debugging method; Adding the debugging method to a class of a package to be debugged; And designing a debugging function connected to the debugging method through a native interface to actually perform an operation of the debugging method.
이로써, 소스 코드를 실시간으로 디버깅할 수 있으며, 특히 스마트 카드의 운영체제 개발환경에서 스마트 카드의 각 모듈 언어의 상이함으로 인한 디버깅의 불편함을 해소할 수 있다.As a result, the source code can be debugged in real time, and in particular, the inconvenience of debugging due to the difference of each module language of the smart card in the operating system development environment of the smart card can be solved.
이하에서, 첨부된 도면들을 참조하여 본 발명에 따른 소스 코드 실시간 디버깅 방법에 관해 상세히 설명한다. Hereinafter, with reference to the accompanying drawings will be described in detail a source code real-time debugging method according to the present invention.
도 1은 일반적인 스마트 카드 운영체제 개발 환경을 도시한 도면이다.1 is a diagram illustrating a general smart card operating system development environment.
도 1을 참조하면, 스마트 카드 운영체제 개발 환경은 소스 코드(102)를 컴파일러(104)를 이용하여 object code(106)로 생성하는 object code 생성 모듈(100), 생성된 object code(106)를 시뮬레이터(140) 및 에뮬레이터(150) 환경에 맞는 테스트 코드(130)로 변환해 주는 object code 처리모듈(110), 테스트 코드(130)를 로딩(loading)하여 테스트하는 시뮬레이터(140) 및 에뮬레이터(150)로 구성된다.Referring to FIG. 1, the smart card operating system development environment generates an object code generation module 100 and an object code 106 that generate the source code 102 using the compiler 104 and the object code 106. The object code processing module 110 converts the test code 130 suitable for the environment of the 140 and the emulator 150, the simulator 140 and the emulator 150 to load and test the test code 130. It consists of.
본 발명에서 언급하는 소스 코드는 API 레벨에 위치하는 클래스는 물론 스마트 카드 운영체제를 구성하는 모든 소스 코드를 의미한다. 본 발명은 스마트 카드 운영체제 개발에 있어 실시간으로 소스 코드를 디버깅할 수 있는 기술로 디버깅 관련 API 클래스 및 디버깅 함수를 스마트 카드 운영체제에 포함하여 개발자가 운영체제 개발을 수행하면서 API 클래스 내에 정의된 변수, 배열 및 내부 시스템 파라미터로 사용되는 PC(Program Counter), SP(Stack Pointer) 값 등을 편리하게 디버깅할 수 있는 방법이다.The source code referred to in the present invention means all the source code constituting the smart card operating system as well as the class located at the API level. The present invention is a technology that can debug source code in real time in the development of smart card operating system, including the debugging-related API class and debugging functions in the smart card operating system, while developers perform operating system development, variables, arrays and This is a convenient way to debug PC (Program Counter) and SP (Stack Pointer) values used as internal system parameters.
본 발명에서 제안하는 방법을 카드 운영체제 개발 환경에 적용할 경우, 개발자는 자신이 디버깅하고자 하는 용도에 맞게 디버깅 레벨을 선택하고 디버깅하고자 하는 변수를 선택하여 디버깅 함수를 호출한다. 디버깅 레벨과 디버깅 함수는 다양한 형태로 제공될 수 있으며, 호출된 디버깅 함수는 토큰(token) 값을 이용하여 현재 API상의 어떤 패키지의 어떤 클래스의 변수가 디버깅되고 있는지를 개발자에게 알려준다.When the method proposed in the present invention is applied to a card operating system development environment, a developer selects a debugging level according to the purpose of debugging and selects a variable to be debugged and calls a debugging function. Debugging levels and debugging functions can be provided in various forms, and the called debugging function uses token values to inform the developer what variables in which classes in which package are currently being debugged on the API.
본 발명에서 제안하는 방법은 스마트 카드 운영체제 개발 환경에서 운영체제를 설계하고 개발하는 동안 개발자에게 실시간으로 편리한 소스 코드 디버깅 환경을 제공해줌으로써 스마트 카드 운영체제 및 응용 프로그램의 생산성을 향상시킬 수 있다. 또한, 편리한 디버깅 도구로 인해 카드 운영체제 및 다양한 응용 프로그램의 개발이 가속화 될 수 있다. The method proposed in the present invention can improve the productivity of the smart card operating system and applications by providing a convenient source code debugging environment in real time during the design and development of the operating system in the smart card operating system development environment. In addition, convenient debugging tools can accelerate the development of card operating systems and various applications.
즉, 본 발명은 스마트 카드 운영체제 개발 시 실시간으로 소스 코드를 디버깅할 수 있는 방법으로 개발자에게 API 레벨 상의 소스 코드 디버깅 방법을 더욱 편리하게 제공해 줄 수 있는 기술이다. In other words, the present invention is a technology that can provide a method of debugging source code on the API level more conveniently as a way to debug the source code in real time when developing a smart card operating system.
도 2는 시뮬레이터 또는 에뮬레이터 환경에서 테스트하는 데 사용되는 스마트 카드의 내부구조를 도시한 도면이다.2 shows the internal structure of a smart card used for testing in a simulator or emulator environment.
먼저 단말기(220)와 스마트 카드(200)사이의 통신을 살펴보면, 스마트 카드(200)와 단말기(220)는 APDU(Application Protocol Data Unit)를 통해 상호 메시지를 송ㆍ수신하는데 APDU는 ISO 7816 표준에서 지정된 통신 프로토콜이다. 스마트 카드(200)는 항상 단말기(220)로부터 명령 APDU가 전달되어야만 동작하는 수동적(reactive)인 매체로, 단말기(220)로부터 명령어가 전달되면 해당 명령어를 처리하여 응답 APDU를 단말기에 전송한다. 명령 APDU는 APDU의 상위 5바이트를 헤더로 사용하고, 응답 APDU는 상태 값으로 SW1, SW2 2바이트를 이용하여 명령 APDU 처리 후 카드의 상태를 단말기에게 전송한다.First, the communication between the terminal 220 and the smart card 200, the smart card 200 and the terminal 220 transmits and receives mutual messages through an APDU (Application Protocol Data Unit), which APDU in the ISO 7816 standard The specified communication protocol. The smart card 200 is a passive medium that operates only when a command APDU is transmitted from the terminal 220. When the command is received from the terminal 220, the smart card 200 processes the command and transmits a response APDU to the terminal. The command APDU uses the upper 5 bytes of the APDU as the header, and the response APDU transmits the status of the card to the terminal after processing the command APDU using SW1 and SW2 2 bytes as status values.
도 2를 참조하면, 스마트 카드(200) 내부는 적어도 하나 이상의 애플릿(202), 선택된 애플릿에 명령 APDU를 송신하고 카드의 응답 APDU를 수신하는 APDU routing 모듈(204), 카드 API로 명명되는 카드 class library(206), 플랫폼 독립성을 제공하는 가상 기계(208), APDU 통신을 담당하는 I/O(Input/Output)(210), 암호 알고리즘 관련 모듈(214), 그리고 그 밖의 메모리 및 기타 모듈(212)과 하드웨어(216)로 구성된다. Referring to FIG. 2, the smart card 200 has at least one applet 202, an APDU routing module 204 for transmitting a command APDU to a selected applet and receiving a response APDU of the card, and a card class named as a card API. library 206, virtual machine 208 providing platform independence, input / output (I / O) 210 responsible for APDU communication, cryptographic algorithm related modules 214, and other memory and other modules 212 ) And hardware 216.
예를 들어, 스마트 카드에 탑재된 애플릿의 테스트 절차를 살펴보면 다음과 같다. For example, the test procedure for an applet mounted on a smart card is as follows.
테스트 할 애플릿5(202)를 AID(Application Identifier)를 이용하여 선택한 후, APDU tool(220)에서 선택된 애플릿에 처리하고자 하는 명령 APDU를 송신한다. 카드로 수신된 명령 APDU는 스마트 카드의 I/O모듈(210)로 수신되어 APDU routing 모듈(204)을 통해 현재 선택되어 있는 애플릿5(202)에게 전달된다. 애플릿5(202)로 전달된 해당 명령어는 애플릿 내부에 구현된 해당 함수를 호출한 후, 처리 결과를 I/O모듈(210)을 통해 APDU tool(220)에게 전송한다. After selecting the applet 5 202 to be tested using an application identifier (AID), the APDU tool 220 transmits a command APDU to be processed to the selected applet. The command APDU received by the card is received by the I / O module 210 of the smart card and transmitted to the currently selected applet 5 202 through the APDU routing module 204. The command transmitted to the applet 5 202 calls the corresponding function implemented in the applet, and then transmits the processing result to the APDU tool 220 through the I / O module 210.
암호 알고리즘 처리와 관련된 특정 명령어를 단말기 응용 프로그램으로부터 수신하는 경우, 앞서 설명한 방식과 동일하게 진행되어 처리되며 이 경우 특정 명령어는 class library(206)상의 특정 함수나, 가상 기계(208), 암호 알고리즘 관련 모듈(214)에 구현된 함수 또는 하드웨어(216)에 구현된 암호 가속기(Accelerator)등을 호출하여 해당 함수를 처리한다. When receiving a specific command related to the encryption algorithm processing from the terminal application, the process proceeds in the same manner as described above. In this case, the specific command is related to a specific function on the class library 206, the virtual machine 208, or the encryption algorithm. A function implemented in module 214 or a cryptographic accelerator implemented in hardware 216 is called to process the function.
이후, 지금까지 설명한 스마트 카드 운영체제 개발 시 실시간으로 소스 코드를 디버깅할 수 있는 기능을 구현하기 위한 구체적인 방법 및 절차에 대해 도 3을 참조하여 보다 상세히 설명한다.Hereinafter, a detailed method and procedure for implementing a function for debugging source code in real time when developing the smart card operating system described so far will be described in more detail with reference to FIG. 3.
도 3은 본 발명에 따른 소스 코드 실시간 디버깅 기능을 구현하기 위한 단계를 도시한 도면이다.3 is a diagram illustrating steps for implementing a source code real-time debugging function according to the present invention.
도 3을 참조하면, 본 발명에 따른 소스 코드 실시간 디버깅 기능 구현을 위해서는 도 1의 운영체제 개발환경을 기반으로 하여 3가지 추가 모듈이 구현되어야 한다. 추가되는 3단계(S300,S310,S340)는 크게 디버깅 API 설계 단계(S300), 디버깅 레벨 및 디버깅 메소드 추가 단계(S310) 및 디버깅 함수 설계 단계(S340)이다. 이하, 구체적인 내용은 아래와 같다.Referring to FIG. 3, in order to implement the source code real-time debugging function according to the present invention, three additional modules should be implemented based on the operating system development environment of FIG. 1. The three additional steps S300, S310, and S340 are largely a debugging API design step S300, a debugging level and a debugging method adding step S310, and a debugging function design step S340. Hereinafter, specific contents are as follows.
디버깅 API 설계 단계(S300)는 디버깅 클래스를 생성하고(S302) 디버깅 클래스 내에 포함될 다양한 기능의 디버깅 메소드(method)(S304) 및 디버깅 레벨을 설정하는 메소드를 구현한다(S306). 그리고 디버깅하고자 하는 클래스가 속한 패키지와 해당 패키지에서의 클래스 명을 추후 소스 코드 디버깅 시 개발자에게 제공해주기 위한 토큰(token)값을 각 패키지의 클래스에 할당한다(S306). 또한, native 키워드를 이용하여 디버깅 메소드를 native interface를 통해 카드 운영 체제상의 디버깅 함수와 연결될 수 있도록 하는 인터페이스를 설계한다(S308). 일반적으로 API와 카드 운영 체제상의 프로그램 언어의 상이함으로 인해 디버깅 메소드와 실제 구현 함수는 native interface를 통해 연결된다.Debugging API design step (S300) generates a debugging class (S302) and implements a method for setting the debugging method (S304) and the debugging level of various functions to be included in the debugging class (S306). In addition, a token value for providing the package to the developer for debugging the source code later is assigned to the class of each package. In addition, using the native keyword to design an interface that allows the debugging method to be connected to the debugging function on the card operating system through the native interface (S308). In general, due to the differences in API and programming language on the card operating system, debugging methods and actual implementation functions are connected through native interfaces.
디버깅 레벨 및 디버깅 함수 추가 단계(S310)는 디버깅 API 설계 단계(S300)에서 설계한 디버깅 클래스와 디버깅 메소드를 이용하여 디버깅하고자 하는 클래스에 디버깅 레벨을 설정하고 디버깅 메소드를 추가하는 작업을 수행한다. The debugging level and the adding debugging function step S310 are performed by setting the debugging level and adding the debugging method to the class to be debugged using the debugging class and the debugging method designed in the debugging API design step S300.
즉, 디버깅하고자 하는 클래스에 디버깅 API 설계 단계에서 설계한 디버깅 레벨을 설정하는 메소드를 호출하는 함수를 추가하여 디버깅하고자 하는 클래스의 디버깅 레벨을 설정하고, 다양한 기능의 디버깅을 제공하는 디버깅 메소드를 추가한다. 소스 코드 디버깅을 위해 디버깅 레벨 및 디버깅 메소드 추가 단계(S310)에서 개발자가 해야 할 구체적인 단계는 다음과 같다.That is, add a function that calls a method that sets the debugging level designed in the debugging API design stage to the debugging class to set the debugging level of the class to be debugged, and add a debugging method that provides debugging of various functions. . The detailed steps for the developer in the step of adding a debugging level and debugging method (S310) for source code debugging are as follows.
먼저, 디버깅하고자 하는 클래스 상에 개발자가 원하는 디버깅 레벨을 선택하여 설정한 후 디버깅하고자 하는 클래스의 변수를 파라미터로 하는 디버깅 메소드를 추가한다(S312). 그리고 현재 디버깅할 변수가 어느 패키지상의 어느 클래스에 위치해있는지를 확인하기 위해 디버깅 API 설계 단계에서 할당한 토큰 값 중 현재 클래스를 나타내는 토큰 값을 설정한다(S314). First, a developer selects and sets a desired debugging level on a class to be debugged, and then adds a debugging method that takes a variable of a class to be debugged as a parameter (S312). In order to check whether a variable to be debugged is located in which class in which package, a token value representing the current class is set among token values allocated in the debugging API design step (S314).
디버깅 함수 설계 단계(S340)는 디버깅 API 설계 단계(S300)에서 설계한 디버깅 클래스의 디버깅 메소드와 native interface를 통해 연결되는 디버깅 함수를 설계한다. 디버깅 함수 설계 단계(S340)에서 설계하는 디버깅 함수는 디버깅 API 설계 단계에서 설계한 디버깅 메소드의 기능을 실제로 구현하기 위한 함수이다.Debugging function design step (S340) designs a debugging function connected through the debugging method and the native interface of the debugging class designed in the debugging API design step (S300). The debugging function designed in the debugging function design step (S340) is a function for actually implementing the function of the debugging method designed in the debugging API design step.
구체적으로, 디버깅 함수 설계 단계(S340)는 디버깅 API 설계 단계(S300)의 디버깅 클래스에 선언된 디버깅 메소드, 토큰 설정 메소드, 디버깅 레벨 설정 메소드의 기능을 실제로 구현하는 디버깅 함수를 설계한다. 즉, 이 단계에서는 개발자가 설정한 디버깅 레벨을 토대로 디버깅 조건을 검사하는 함수(S342), 개발자가 디버깅하고자 하는 변수 값을 실시간으로 출력해주는 함수(S344), 현재 디버깅하고 있는 클래스 변수가 어느 패키지의 어느 클래스에 포함되어 있는지를 토큰 값을 참조하여 실시간으로 출력하는 함수 등이 설계된다(S346). Specifically, the debugging function designing step (S340) designs a debugging function that actually implements the functions of the debugging method, token setting method, and debugging level setting method declared in the debugging class of the debugging API designing step (S300). That is, in this step, a function for checking debugging conditions based on the debugging level set by the developer (S342), a function for outputting the value of a variable to be debugged in real time (S344), and a class variable currently being debugged A function for outputting in real time with reference to a token value which class is included is designed (S346).
또한, 디버깅 레벨에 따라 error 또는 warning 메시지를 출력해주는 함수 또는 시스템 내부 파라미터 값을 출력해주는 함수를 추가적으로 설계할 수 있다(S348). In addition, a function for outputting an error or warning message or a function for outputting a system internal parameter value may be additionally designed according to the debugging level (S348).
object code 처리 모듈(S330)은 object code를 이용하여 패키지 단위로 컨버팅(converting)을 수행하고, 에뮬레이터 환경이나 시뮬레이터 환경에서 동작할 수 있는 테스트 코드를 생성해주는 도구를 포괄적으로 의미한다. 일례로, 자바 카드 애플릿을 테스트하고자 하는 경우, 테스트 코드는 CAP(Converted Applet)파일이 될 것이다. The object code processing module S330 comprehensively refers to a tool for converting in units of packages using object code and generating test code for operating in an emulator environment or a simulator environment. For example, if you want to test a Java Card applet, the test code will be a Converted Applet (CAP) file.
전체적으로 살펴보면, 디버깅 API 설계 단계(S300) 및 디버깅 레벨 및 디버깅 메소드 추가 단계(S310)에 의해 설계된 클래스 및 메소드들은 컴파일러를 통해 컴파일된(S320) 후 object code로 생성된다. Object code는 object code 처리 모듈에 의해 시뮬레이터 및 에뮬레이터 환경에 맞는 코드로 변환된다(S330), 본 발명에 따른 디버깅 함수 설계 단계(S340)에서는 카드 운영 체제 레벨에 실제 디버깅 기능을 수행하는 함수를 설계한다. 마지막으로, object code 처리 모듈에 의해 변화된 코드(S330)와 디버깅 함수 설계 단계(S340)에서 설계된 함수들로부터 에뮬레이터 및 시뮬레이터에서 실제 수행할 수 있는 테스트 코드(바이너리 코드)를 생성한 후(S350), 에뮬레이터 또는 시뮬레이터에서 실행시킨다. 테스트 코드는 실제로 APDU tool(220)과 함께 수행될 테스트 파일을 의미한다. As a whole, the classes and methods designed by the debugging API design step (S300) and the debugging level and debugging method addition step (S310) are compiled by the compiler (S320) and then generated as object code. The object code is converted into a code suitable for a simulator and an emulator environment by the object code processing module (S330). In the debugging function designing step (S340) according to the present invention, a function for performing an actual debugging function is designed at the card operating system level. . Finally, after generating the test code (binary code) that can be actually executed in the emulator and the simulator from the code changed by the object code processing module (S330) and the debugging function design step (S340) (S350), Run it in the emulator or simulator. The test code actually means a test file to be performed together with the APDU tool 220.
도 4a는 스마트 카드 운영체제 개발환경의 흐름을 도시한 흐름도이다.4a is a flowchart illustrating a flow of a smart card operating system development environment.
도 4a를 참조하면, 먼저 스마트 카드에 탑재할 API(암호, UICC, GP 등) 및 테스트 애플릿을 작성한다(S400). 컴파일러는 작성된 애플릿의 소스 코드를 컴파일하여 object code를 생성한다(S402). Object code 처리 모듈은 컴파일러에 의해 생성된 object code를 에뮬레이터 또는 시뮬레이터 환경에 맞는 코드로 변환한다(S404). 그리고 APDU tool과 함께 실제 수행할 테스트 코드를 생성한다(S408). 시뮬레이터 또는 에뮬레이터는 테스트 코드를 이용하여 테스트 애플릿 및 카드 운영체제를 테스트한다(S410). Referring to FIG. 4A, first, an API (password, UICC, GP, etc.) and a test applet to be mounted on a smart card are created (S400). The compiler generates the object code by compiling the source code of the created applet (S402). The object code processing module converts the object code generated by the compiler into a code suitable for an emulator or a simulator environment (S404). In addition, the test code is generated with the APDU tool to be actually executed (S408). The simulator or emulator tests the test applet and the card operating system using the test code (S410).
도 4b는 본 발명에 따른 실시간 소스 코드 디버깅 방법을 적용한 스마트 카드 운영체제 개발 환경의 흐름을 도시한 흐름도이다.4b is a flowchart illustrating a flow of a smart card operating system development environment to which a real-time source code debugging method according to the present invention is applied.
도 4b를 참조하면, 디버깅 클래스 및 디버깅 클래스에 포함되는 디버깅 메소드를 설계하고 디버깅하고자 하는 각 패키지의 클래스에 토큰(token)값을 할당한다(S450). 그리고 스마트 카드용 테스트 애플릿 및 API를 작성한 후(S452), 디버깅 할 변수가 속해있는 클래스에 디버깅 레벨 및 디버깅 메소드를 추가하고 현재 클래스의 토큰 값을 설정한다(S454). Referring to FIG. 4B, a debugging class and a debugging method included in the debugging class are designed and a token value is assigned to a class of each package to be debugged (S450). After writing the test applet and API for the smart card (S452), the debugging level and the debugging method are added to the class to which the variable to be debugged belongs and the token value of the current class is set (S454).
상기 단계에서 작성된 클래스, 메소드, 애플릿 및 API를 컴파일러에 의해 컴파일하여 object code를 생성한다(S456). 생성된 object code는 object code 처리 모듈에 의해 에뮬레이터 또는 시뮬레이터 환경에 맞는 코드로 변경된다(S458). The class, method, applet, and API created in the above step are compiled by the compiler to generate object code (S456). The generated object code is changed to a code suitable for an emulator or a simulator environment by the object code processing module (S458).
다음으로 디버깅 클래스의 디버깅 메소드와 native interface로 연결되고 스마트 카드의 운영 체제 레벨에 존재하며, 디버깅 클래스의 디버깅 메소드의 실제 구현 기능을 가지는 함수를 설계한다(S460). Object code 처리 모듈에 의해 변경된 코드 및 구현된 디버깅 함수를 이용하여 에뮬레이터 또는 시뮬레이터에서 실제 동작 가능한 테스트 코드를 생성한다(S462).Next, a function that is connected to the debugging method of the debugging class and the native interface, exists at the operating system level of the smart card, and has a function having an actual implementation function of the debugging method of the debugging class (S460). Using the code changed by the object code processing module and the implemented debugging function, test code that is actually operable in the emulator or the simulator is generated (S462).
다양한 기능의 디버깅 메소드를 포함하는 디버깅 클래스를 생성하고, 디버깅 하고자하는 패키지의 클래스에 디버깅과 관련된 다양한 메소드를 설계하고, 개발자의 기호에 따라 이용할 수 있게 함으로써, 개발자는 디버깅하고자 하는 클래스의 변수, 시스템 내부 파라미터 값 등을 실시간으로 추적하면서 패키지의 클래스를 디버깅할 수 있다. 디버깅 메소드의 실제 구현은 카드 운영 체제 레벨에 설계된 디버깅 함수에 의해 구현되며 이를 위해 디버깅 메소드와 카드 운영 체제 레벨의 디버깅 함수는 native interface에 의해 연결된다. By creating a debugging class that includes debugging functions of various functions, designing various methods related to debugging in the class of the package to be debugged, and making them available according to the preference of the developer, the developer can use variables and system of the class to be debugged. You can debug your package's classes, tracking internal parameter values and more in real time. The actual implementation of the debugging method is implemented by a debugging function designed at the card operating system level. For this purpose, the debugging method and the card operating system level debugging function are connected by a native interface.
이하에서 설명하는 단계는 카드 운영 체제의 개발 환경에서 테스트하는 절차를 나타낸다.The steps described below represent procedures for testing in the development environment of the card operating system.
먼저 테스트 하고자 하는 애플릿 및 스크립트 파일을 선택하고(S464), 테스트 하고자 하는 애플릿에 브레이크 포인트 및 테스트 파라미터를 설정한다(S466). 그리고 애플릿에서 처리하고자 하는 명령을 APDU tool(220)로부터 수신 받은 후 애플릿으로 전송한다(S468). 애플릿은 명령어를 파싱하여 해당하는 명령에 따른 동작을 수행한다(S470 내지 S476). 그리고 명령에 따른 동작을 수행한 후, 혹은 수행하면서 디버깅 할 변수 값 및 변수가 위치하고 있는 패키지, 클래스명을 출력한다. 또한 디버깅 레벨에 따라 error 및 warning 메시지를 출력하고, APDU 명령어 처리 결과 및 카드 응답을 APDU Tool(220)에게 송신한다(S478). First, an applet and a script file to be tested are selected (S464), and a break point and test parameters are set in the applet to be tested (S466). And after receiving the command to be processed in the applet from the APDU tool 220 and transmits to the applet (S468). The applet parses the command and performs an operation according to the corresponding command (S470 to S476). Then, after executing the command operation or while executing the command, the variable value to be debugged and the package and class name where the variable is located are displayed. In addition, the error and warning messages are output according to the debugging level, and the APDU command processing result and the card response are transmitted to the APDU Tool 220 (S478).
모든 스크립트에 대한 테스트가 완료되면 종료한다(S480).When the test for all scripts is completed, the process ends (S480).
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.So far I looked at the center of the preferred embodiment for the present invention. Those skilled in the art will appreciate that the present invention can be implemented in a modified form without departing from the essential features. Therefore, the disclosed embodiments should be considered in descriptive sense only and not for purposes of limitation. The scope of the present invention is shown in the claims rather than the foregoing description, and all differences within the scope will be construed as being included in the present invention.
본 발명에 따르면, 실시간 소스 코드 디버깅 방법을 스마트 카드 운영 체제 개발 환경에 구현함으로써, 종래의 제한적인 디버깅 방식에서 벗어나 개발자가 실시간으로 소스 코드를 디버깅하면서 운영체제를 테스트하고 개발할 수 있는 개발자 관점의 편리한 개발환경을 제공할 수 있다. 특히, 자바 카드의 경우 API와 카드 운영 체제의 구현 프로그래밍 언어의 상이함으로 인한 디버깅의 불편함을 해소할 수 있다.According to the present invention, by implementing the real-time source code debugging method in the smart card operating system development environment, a convenient development from the developer's point of view to develop and test the operating system while the developer debugs the source code in real time from the conventional limited debugging method It can provide an environment. In particular, in the case of Java Card, it is possible to solve the inconvenience of debugging due to the difference between the API and the implementation programming language of the card operating system.
그리고, 본 발명에 따른 실시간 소스 코드 디버깅 방법이 적용된 카드 운영 체제 개발 환경은 개발자에게 실시간으로 편리한 소스 코드 디버깅 환경을 제공해줌으로써 스마트 카드 운영체제 및 응용 프로그램 개발 시 생산성을 향상시킬 뿐만 아니라 다양한 카드 운영체제와 응용 프로그램 개발을 활성화 시킬 수 있다.In addition, the card operating system development environment to which the real-time source code debugging method according to the present invention is applied provides a convenient source code debugging environment to developers in real time, thereby improving productivity in smart card operating system and application development as well as various card operating systems and applications. Program development can be activated.
도 1은 일반적인 스마트 카드 운영체제 개발 환경을 도시한 도면,1 is a diagram illustrating a general smart card operating system development environment,
도 2는 시뮬레이터 또는 에뮬레이터 환경에서 테스트하는 데 사용되는 스마트 카드의 내부구조를 도시한 도면 ,2 shows the internal structure of a smart card used for testing in a simulator or emulator environment.
도 3은 본 발명에 따른 소스 코드 실시간 디버깅 기능을 구현하기 위한 단계를 도시한 도면,3 is a diagram showing the steps for implementing a source code real-time debugging function according to the present invention,
도 4a는 스마트 카드 운영체제 개발환경의 흐름을 도시한 흐름도, 그리고,4a is a flowchart illustrating a flow of a smart card operating system development environment, and
도 4b는 본 발명에 따른 실시간 소스 코드 디버깅 방법을 적용한 스마트 카드 운영체제 개발 환경의 흐름을 도시한 흐름도이다.4b is a flowchart illustrating a flow of a smart card operating system development environment to which a real-time source code debugging method according to the present invention is applied.
Claims (5)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2003-0087484A KR100503429B1 (en) | 2003-12-04 | 2003-12-04 | Real-time debugging method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2003-0087484A KR100503429B1 (en) | 2003-12-04 | 2003-12-04 | Real-time debugging method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050054150A KR20050054150A (en) | 2005-06-10 |
KR100503429B1 true KR100503429B1 (en) | 2005-07-22 |
Family
ID=37249511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2003-0087484A KR100503429B1 (en) | 2003-12-04 | 2003-12-04 | Real-time debugging method |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100503429B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101390220B1 (en) * | 2012-11-07 | 2014-04-30 | 서울시립대학교 산학협력단 | Method for recommending appropriate developers for software bug fixing and apparatus thereof |
KR101691083B1 (en) * | 2015-01-16 | 2016-12-29 | 서울시립대학교 산학협력단 | System and Method for Bug Fixing Developers Recommendation and Bug Severity Prediction based on Topic Model and Multi-Feature |
-
2003
- 2003-12-04 KR KR10-2003-0087484A patent/KR100503429B1/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR20050054150A (en) | 2005-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7600220B2 (en) | Extensible execution language | |
US10042658B1 (en) | Automatically adding bytecode to a software application to determine network communication information | |
CN110362490B (en) | Automatic testing method and system for integrating iOS and Android mobile applications | |
US11022967B2 (en) | Method for generating a technical system model, executable on a test unit, and the test unit | |
CN113238834B (en) | Simulation model file processing method and device and electronic equipment | |
CN111611008A (en) | Software code packaging and deploying method, device, equipment and storage medium | |
CN111338943A (en) | Test method, test device, electronic equipment and readable storage medium | |
CN104731566A (en) | Testing device, method and system for IDE (Integrated Development Environment) | |
CN104899070B (en) | Implementation method, system and the device of device command row | |
CN111985055A (en) | Model packaging method and device and electronic equipment | |
CN116681013A (en) | Simulation verification method, platform, device, equipment and medium of network chip | |
KR100503429B1 (en) | Real-time debugging method | |
CN109947407B (en) | Data acquisition method and device | |
CN112559264A (en) | Simulation test method for realizing FPGA (field programmable Gate array) universal serial port by verification platform based on UVM (Universal verification Module) | |
CN116860589B (en) | Register verification method and device, electronic equipment and computer storage medium | |
US7036045B2 (en) | Method and system for isolating exception related errors in Java JVM | |
Yang et al. | An open CNC controller based on LabVIEW software | |
US7519719B2 (en) | Automatic creation of protocol dependent control path for instrument application | |
Baker et al. | Testing UML2. 0 models using TTCN-3 and the UML2. 0 testing profile | |
CN113760707A (en) | Interface testing method, device, equipment and computer readable storage medium | |
CN100419711C (en) | Emitter for service debug command, and processing method | |
CN110659215A (en) | Open type industrial APP rapid development and test verification method | |
KR100490899B1 (en) | An Implementation Method for Adding Cryptographic Algorithm Package for Java Card Development Environment | |
CN117520072B (en) | DPU chip multi-scene verification method and system based on UVM platform | |
CN118054933A (en) | UVM-based horizontal multiplexing platform and construction method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20080701 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |