KR20200098847A - 전자장치 및 그 제어방법 - Google Patents

전자장치 및 그 제어방법 Download PDF

Info

Publication number
KR20200098847A
KR20200098847A KR1020190016468A KR20190016468A KR20200098847A KR 20200098847 A KR20200098847 A KR 20200098847A KR 1020190016468 A KR1020190016468 A KR 1020190016468A KR 20190016468 A KR20190016468 A KR 20190016468A KR 20200098847 A KR20200098847 A KR 20200098847A
Authority
KR
South Korea
Prior art keywords
error
server
information
data
collected
Prior art date
Application number
KR1020190016468A
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 KR1020190016468A priority Critical patent/KR20200098847A/ko
Priority to EP20755006.2A priority patent/EP3877858A4/en
Priority to PCT/KR2020/001900 priority patent/WO2020166935A1/en
Priority to US16/788,985 priority patent/US11113130B2/en
Publication of KR20200098847A publication Critical patent/KR20200098847A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0748Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a remote unit communicating with a single-box computer node experiencing an error/fault
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0781Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0733Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a data processing system embedded in an image processing device, e.g. printer, facsimile, scanner
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0412Digitisers structurally integrated in a display

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

전자장치는, 동작 중 발생되는 제1오류에 관한 오류정보를 서버에 전송하도록 통신회로를 제어하고, 오류정보에 기초하여 정해진 제2오류의 해결을 위해 수집할 데이터에 관한 정보를 서버로부터 수신하고, 수신된 정보에 기초하여 동작 중 생성되는 해당 데이터를 메모리에 저장하고, 동작 중 발생되는 제2오류에 기초하여, 저장된 데이터를 서버에 전송하도록 통신회로를 제어한다.

Description

전자장치 및 그 제어방법 {ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF}
본 발명은 다양한 어플리케이션에 의한 프로세스를 실행하여 사용자가 원하는 기능을 구현하는 전자장치 및 그 제어방법에 관한 것으로서, 상세하게는 프로세스의 오류가 발생하였을 때에 오류에 관한 정보를 관리 서버에 전달함으로써 해당 오류를 해결할 수 있도록 하는 전자장치 및 그 제어방법에 관한 것이다.
소정의 정보를 특정 프로세스에 따라서 연산 및 처리하기 위해, 연산을 위한 CPU, 칩셋, 메모리 등의 전자부품들을 기본적으로 포함하는 전자장치는, 처리 대상이 되는 정보 또는 사용 용도가 무엇인지에 따라서 다양한 종류로 구분될 수 있다. 예를 들면, 전자장치에는 범용의 정보를 처리하는 PC나 서버 등의 정보처리장치, 영상데이터를 처리하는 영상처리장치, 오디오를 처리하는 오디오장치, 가정 내 잡무를 수행하는 생활가전 등이 있다. 영상처리장치는 처리된 영상데이터를 자체 구비한 디스플레이 패널(display panel) 상에 영상으로 표시하는 디스플레이장치로 구현될 수 있다. 이와 같은 다양한 종류의 전자장치들은 상호 통신이 가능한 서버 및 클라이언트의 역할을 각기 수행할 수 있다.
전자장치의 제조사는 다양한 종류 또는 모델의 전자장치들에서 구동하는 어플리케이션 플랫폼을 구현한다. 구현된 플랫폼이 개방형인 경우에, 많은 회사 및 개발자들이 이러한 플랫폼 상에 실행되는 어플리케이션을 제작하여 전자장치에서 실행될 수 있도록 제공한다. 그런데, 어플리케이션의 수가 많아지고 어플리케이션의 종류가 다양해짐에 따라서, 제조사가 플랫폼을 처음 구현시켜서 제공할 당시에는 예측할 수 없었던 오류가 전자장치에서 어플리케이션이 실행될 때에 발생하기도 한다. 이를 대비하여, 제조사는 관리 서버를 통해 여러 전자장치들로부터 오류에 관한 정보를 수집하고, 수집된 정보를 기반으로 어플리케이션의 디버깅을 수행함으로써 오류의 원인을 규명한다. 제조사는 규명된 원인에 따라서 어플리케이션이 수정되도록 하는 등의 대응책을 마련하여, 전자장치에게 제공한다.
그런데, 전자장치의 종류 또는 모델에 따라서는, 어플리케이션의 실행 시 발생한 오류에 관련된 모든 정보를 저장하기에 충분한 메모리의 용량을 가지지 못한 전자장치도 있다. 이러한 점을 고려하여, 통상적으로 전자장치는 어플리케이션에 의한 프로세스의 오류가 발생하면, 사전에 정해진 적은 용량의 정보만을 서버로 보낸다. 예를 들어 오류가 발생한 프로세스가 복수의 스레드(thread)를 포함할 때, 전자장치는 메인 스레드에 관한 정보만을 서버로 보낸다.
그런데, 프로세스는 복수의 스레드가 상호 연계되어 순차적 또는 함께 실행됨으로써 구현되는 특성 상, 프로세스의 오류가 어느 한 가지 스레드가 아닌 여러 스레드의 연계동작에 의해서 발생할 수도 있다. 이러한 경우에, 개발자는 서버를 통해 수집된 메인 스레드에 관한 정보만으로는 프로세스의 오류의 원인을 규명하는 것이 곤란하다. 물론, 전자장치가 프로세스 내 모든 스레드에 관한 정보를 보낼 수 있다면 가장 확실하게 오류의 분석이 가능하겠지만, 앞서 설명한 바와 같이 전자장치의 장치 특성에 따라서 이러한 동작이 곤란할 수 있다. 또한, 서버 입장에서도 접속된 모든 전자장치로부터 막대한 양의 오류 정보를 수신하는 것은 부담이 된다.
이러한 관점에서, 서버가 여러 전자장치로부터 수집하는 오류 관련 정보량을 줄이면서도, 오류의 원인을 명확히 규명하기에 충분한 정보들을 수집하는 방법이 요구된다.
본 발명의 실시예에 따른 전자장치는, 메모리와; 서버와 통신 가능하게 마련된 통신회로와; 동작 중 발생되는 제1오류에 기초하여, 상기 제1오류에 관한 오류정보를 상기 서버에 전송하도록 상기 통신회로를 제어하고, 상기 오류정보에 기초하여 정해진 제2오류의 해결을 위해 수집할 데이터에 관한 정보를 상기 서버로부터 수신하고, 상기 수신된 정보에 기초하여 동작 중 생성되는 상기 데이터를 상기 메모리에 저장하고, 동작 중 발생되는 상기 제2오류에 기초하여, 상기 저장된 데이터를 상기 서버에 전송하도록 상기 통신회로를 제어하는 프로세서를 포함한다.
여기서, 상기 제2오류의 해결을 위해 수집할 데이터는, 상기 전자장치로부터 상기 서버에 전송한 상기 오류정보와, 복수의 타 전자장치로부터 상기 서버에 의해 각기 수집된 오류정보에 기초하여 정해질 수 있다.
여기서, 상기 제2오류는, 상기 전자장치 및 상기 복수의 타 전자장치 각각으로부터 수집된 상기 오류정보가 보고하는 오류 중에서 발생 회수가 가장 많은 오류일 수 있다.
또한, 상기 프로세서는, 상기 제2오류의 해결을 위해 수집할 데이터를 저장 가능한 상기 메모리의 가용 용량이 문턱값보다 높으면 상기 정보를 수신하고, 상기 가용 용량이 상기 문턱값보다 높지 않으면 상기 정보를 수신하지 않을 수 있다.
여기서, 상기 프로세서는, 상기 서버가 상기 메모리의 가용 용량에 대응하여 선택적으로 상기 수집할 데이터에 관한 정보를 전송하도록, 상기 메모리의 가용 용량을 나타내는 정보를 상기 서버에 전송할 수 있다.
또한, 상기 제1오류는 상기 제2오류와 동일할 수 있다.
또한, 본 발명의 실시예에 따른 전자장치의 제어방법은, 동작 중 발생되는 제1오류에 기초하여, 상기 제1오류에 관한 오류정보를 서버에 전송하는 단계와, 상기 오류정보에 기초하여 정해진 제2오류의 해결을 위해 수집할 데이터에 관한 정보를 상기 서버로부터 수신하는 단계와, 상기 수신된 정보에 기초하여 동작 중 생성되는 상기 데이터를 메모리에 저장하는 단계와, 동작 중 발생되는 상기 제2오류에 기초하여, 상기 저장된 데이터를 상기 서버에 전송하는 단계를 포함한다.
또한, 본 발명의 실시예에 따른 서버는, 복수의 단말과 통신 가능하게 마련된 통신회로와; 상기 복수의 단말 각각으로부터 수집되는 동작 중 발생한 오류에 관한 오류정보에 기초하여 오류를 선별하고, 상기 선별된 오류에 관한 상기 오류정보를 보고한 상기 단말들 중에서 일부의 상기 단말들을 선별하고, 상기 선별된 오류의 해결을 위해 수집할 데이터에 관한 정보를 상기 선별된 단말들에 전송하도록 상기 통신회로를 제어하고, 상기 선별된 단말들 각각으로부터 상기 전송한 정보에 기초하여 생성된 상기 데이터를 수집하는 프로세서를 포함한다.
도 1은 본 발명의 실시예에 따른 전자장치의 구성 블록도이다.
도 2는 본 발명의 실시예에 따른 단말의 제어방법을 나타내는 플로우차트이다.
도 3은 본 발명의 실시예에 따른 서버 및 복수의 단말 사이에서 오류정보의 수집을 위해 수행되는 프로세스를 나타내는 예시도이다.
도 4는 본 발명의 실시예에 따른 서버의 제어방법을 나타내는 플로우차트이다.
도 5는 본 발명의 실시예에 따른 서버가 각 단말로부터 수집한 단말 별 오류정보의 일부를 나타내는 예시도이다.
도 6은 본 발명의 실시예에 따른 서버에 마련된 정책정보의 일부를 나타내는 예시도이다.
도 7은 본 발명의 실시예에 따른 단말에서 동작하는 운영체제 하에서 동작하는 프로세스의 구조에 관한 블록도이다.
도 8은 본 발명의 실시예에 따른 복수의 서버가 오류정보의 수집을 위해 수행하는 프로세스를 나타내는 예시도이다.
이하에서는 첨부도면을 참조하여 본 발명에 따른 실시예들에 관해 상세히 설명한다. 각 도면을 참조하여 설명하는 실시예들은 특별한 언급이 없는 한 상호 배타적인 구성이 아니며, 하나의 장치 내에서 복수 개의 실시예가 선택적으로 조합되어 구현될 수 있다. 이러한 복수의 실시예의 조합은 본 발명의 기술분야에서 숙련된 기술자가 본 발명의 사상을 구현함에 있어서 임의로 선택되어 적용될 수 있다.
만일, 실시예에서 제1구성요소, 제2구성요소 등과 같이 서수를 포함하는 용어가 있다면, 이러한 용어는 다양한 구성요소들을 설명하기 위해 사용되는 것이며, 용어는 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용되는 바, 이들 구성요소는 용어에 의해 그 의미가 한정되지 않는다. 실시예에서 사용하는 용어는 해당 실시예를 설명하기 위해 적용되는 것으로서, 본 발명의 사상을 한정하지 않는다.
또한, 본 명세서에서의 복수의 구성요소 중 "적어도 하나(at least one)"라는 표현이 나오는 경우에, 본 표현은 복수의 구성요소 전체 뿐만 아니라, 복수의 구성요소 중 나머지를 배제한 각 하나 혹은 이들의 조합 모두를 지칭한다.
도 1은 본 발명의 실시예에 따른 전자장치의 구성 블록도이다.
도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 시스템은 복수의 단말(110)과, 네트워크를 통해 각 단말(110)과 상호 통신 가능하게 접속되는 서버(120)를 포함한다. 본 실시예에 따른 전자장치는 서버(120) 및 단말(110) 중 어느 하나로 구현될 수 있다. 서버(120) 및 단말(110)의 접속 방식은 광역 네트워크, 근거리 네트워크, 케이블에 의한 일대 다 접속 등 다양하다. 시스템이 서버(120)를 포함하는 것은 하나의 예시일 뿐이며, 설계 방식에 따라서 서버(120)는 다양한 종류의 단말(110)에 통신 가능하게 접속되는 호스트장치로 대체될 수 있다. 단말(110)은 디스플레이장치, 영상처리장치, 생활가전, 정보처리장치 등 다양한 종류의 장치로 구현될 수 있다. 예를 들면, 단말(110)은 TV, 컴퓨터, 셋탑박스, 태블릿, 휴대용 미디어 플레이어, 웨어러블 디바이스 등을 포함한다.
단말(110)은 운영체제 상에서 어플리케이션 프로그램을 구동시켜 하나 이상의 프로세스를 실행시킨다. 단말(110)은 어느 한 시점에서 복수의 프로세스를 실행시키는 멀티 프로세스를 구현할 수 있다. 단말(110)은 실행중인 하나 이상의 프로세스에서 오류가 발생하면, 해당 프로세스의 오류에 관한 오류정보를 서버(120)로 보낸다.
서버(120)는 본 실시예와 같이 단일 장치는 물론, 기능 별로 구분된 다수의 장치군으로 구현될 수 있다. 서버(120)는 접속되는 각 단말(110)로부터, 해당 단말(110)로부터 발생하는 프로세스의 오류에 관한 오류정보를 수집한다. 이와 같이 서버(120)에 수집된 각 단말(110)로부터의 오류정보에 기반하여, 개발자는 해당 오류의 원인을 규명하고 해결책을 도출한다. 예를 들면, 개발자가 프로세스에서 오류가 발생하지 않도록 어플리케이션을 수정하고, 수정된 어플리케이션을 서버(120)에 저장한다. 서버(120)는 수정된 어플리케이션을 각 단말(110)에 제공하고, 각 단말(110)은 제공받은 어플리케이션으로 기 저장된 어플리케이션을 업데이트함으로써, 상기한 오류에 대처할 수 있다.
단말(110)은 통신부(111)와, 신호입출력부(112)와, 디스플레이부(113)와, 사용자입력부(114)와, 저장부(115)와, 프로세서(116)를 포함한다. 서버(120)는 서버통신부(121)와, 서버저장부(122)와, 서버프로세서(123)를 포함한다.
이하, 단말(110)의 구성에 관해 설명한다. 본 실시예서는 단말(110)이 디스플레이장치인 경우에 관해 설명하지만, 단말(110)은 다양한 종류의 전자장치로 구현될 수 있으므로, 본 실시예가 단말(110)의 구성을 한정하는 것은 아니다.
통신부(111)는 다양한 종류의 유선 및 무선 통신 프로토콜에 대응하는 통신모듈, 통신칩 등의 구성요소들 중 적어도 하나 이상을 포함하는 양방향 통신회로이다. 예를 들면, 통신부(111)는 와이파이 방식에 따라서 AP와 무선통신을 수행하는 무선통신모듈이나, 라우터 또는 게이트웨이에 유선 접속된 랜카드로 구현될 수 있다. 예를 들면, 통신부(111)는 네트워크 상의 서버(120)와 통신함으로써, 서버(120)와의 사이에 데이터 패킷을 송수신할 수 있다.
신호입출력부(112)는 셋탑박스 또는 광학미디어 재생장치와 같은 외부장치와 일대일 또는 일대다 방식으로 유선 접속됨으로써, 해당 외부장치에 대해 데이터를 수신하거나 또는 데이터를 출력한다. 신호입출력부(112)는 예를 들면, HDMI 포트, DisplayPort, USB 포트 등과 같이, 기 설정된 전송규격에 따른 커넥터 또는 포트 등을 포함한다.
디스플레이부(113)는 화면 상에 영상을 표시할 수 있는 디스플레이 패널을 포함한다. 디스플레이 패널은 액정 방식과 같은 수광 구조 또는 OLED 방식과 같은 자발광 구조로 마련된다. 디스플레이부(113)는 디스플레이 패널의 구조에 따라서 부가적인 구성을 추가로 포함할 수 있는데, 예를 들면 디스플레이 패널이 액정 방식이라면, 디스플레이부(113)는 액정 디스플레이 패널과, 광을 공급하는 백라이트유닛과, 액정 디스플레이 패널의 액정을 구동시키는 패널구동기판을 포함한다.
사용자입력부(114)는 사용자의 입력을 수행하기 위해 사용자가 조작할 수 있도록 마련된 다양한 종류의 입력 인터페이스 관련 회로를 포함한다. 사용자입력부(114)는 단말(110)의 종류에 따라서 여러 가지 형태의 구성이 가능하며, 예를 들면 단말(110)의 기계적 또는 전자적 버튼부, 단말(110)과 분리된 리모트 컨트롤러, 터치패드, 디스플레이부(113)에 설치된 터치스크린 등이 있다.
저장부(115)는 프로세서(116)에 의해 억세스되며, 프로세서(116)의 제어에 따라서 데이터의 독취, 기록, 수정, 삭제, 갱신 등의 동작이 수행된다. 저장부(115)는 전원의 제공 유무와 무관하게 데이터를 저장할 수 있는 플래시메모리(flash-memory), HDD(hard-disc drive), SSD(solid-state drive) ROM(Read Only Memory) 등과 같은 비휘발성 메모리와, 처리를 위한 데이터가 로딩되는 버퍼(buffer), 램(RAM; Random Access Memory) 등과 같은 휘발성 메모리를 포함한다. 본 실시예에서의 저장부(115)는 운영체제와, 운영체제 상에서 실행되도록 마련된 다양한 어플리케이션을 저장한다.
프로세서(116)는 인쇄회로기판 상에 장착되는 CPU, 칩셋, 버퍼, 회로 등으로 구현되는 하나 이상의 하드웨어 프로세서를 포함하며, 설계 방식에 따라서는 SOC(system on chip)로 구현될 수도 있다. 프로세서(170)는 단말(110)이 디스플레이장치로 구현되는 경우에 디멀티플렉서, 디코더, 스케일러, 오디오 DSP, 앰프 등의 다양한 프로세스에 대응하는 모듈들을 포함한다. 여기서, 이러한 모듈들 중 일부 또는 전체가 SOC로 구현될 수 있다. 예를 들면, 디멀티플렉서, 디코더, 스케일러 등 영상처리와 관련된 모듈이 영상처리 SOC로 구현되고, 오디오 DSP는 SOC와 별도의 칩셋으로 구현되는 것이 가능하다.
프로세서(116)는 부팅될 때 운영체제를 기동시키고, 다양한 이벤트에 응답하여 운영체제 상에서 하나 이상의 어플리케이션을 구동시킴으로써, 각 어플리케이션에 의한 프로세스를 실행한다. 그런데, 프로세서(116)가 하나 이상의 프로세스를 실행시키는 동안, 어느 한 프로세스에서 오류가 발생할 수도 있다. 이 경우에, 프로세서(116)는 오류가 발생한 프로세스를 식별하고, 식별된 프로세스의 오류에 관한 정보를 통신부(111)를 통해 서버(120)에 전송한다.
이하, 서버(120)의 구성에 관해 설명한다.
서버통신부(121)는 다양한 종류의 유선 및 무선 통신 프로토콜에 대응하는 통신모듈, 통신칩 등의 구성요소들 중 적어도 하나 이상을 포함하는 양방향 통신회로이다. 서버통신부(121)는 광역 네트워크에 접속됨으로써 단말(110)을 비롯한 다양한 종류의 클라이언트와 네트워크를 통해 통신할 수 있다.
서버저장부(122)는 서버프로세서(123)에 의해 데이터의 독취, 기록, 수정, 삭제, 갱신 등의 동작이 수행된다. 서버저장부(122)는 플래시메모리, HDD, SSD, 버퍼, 램 등의 다양한 비휘발성 메모리 및 휘발성 메모리를 포함한다.
서버프로세서(123)는 인쇄회로기판 상에 장착되는 CPU, 칩셋, 버퍼, 회로 등으로 구현되는 하나 이상의 하드웨어 프로세서를 포함하며, 설계 방식에 따라서는 SOC로 구현될 수도 있다. 서버프로세서(1014)는 단말(110)로부터 수신되는 정보에 기반하여 다양한 처리를 수행할 수 있다. 예를 들면, 서버프로세서(123)는 서버통신부(121)를 통해 여러 단말(110)로부터 프로세스의 오류에 관한 오류정보가 수신되면, 수신되는 오류정보를 기반으로 오류 수집 프로세스가 수행되도록 한다. 오류 수집 프로세스는 서버(120) 및 복수의 단말(110)의 연계 동작에 의해 수행된다. 이하, 오류 수집 프로세스에 관해 설명한다.
도 2는 본 발명의 실시예에 따른 단말의 제어방법을 나타내는 플로우차트이다.
도 2에 도시된 바와 같이, 다음 동작은 어느 한 단말의 프로세서에 의해 실행된다. 또한, 이하 동작을 수행하는 단말은 서버에 통신 가능하게 접속된 복수의 단말 중 적어도 하나이다. 즉, 복수의 단말 각각은 이하 동작을 수행할 수 있다.
210 단계에서 단말은 프로세스를 실행한다. 단말은 예를 들면 저장부에 저장된 어플리케이션을 실행시킴으로써 프로세스를 실행시키며, 복수의 프로세스를 함께 실행시킬 수 있다.
220 단계에서 단말은 프로세스가 실행되는 동안 해당 프로세스에서 제1오류가 발생하는지 여부를 감지한다. 제1오류가 발생하지 않았다면, 단말은 추가적인 동작 없이 해당 프로세스의 실행을 계속한다.
반면에 제1오류가 발생하는 것으로 감지되면, 230 단계에서 단말은 제1오류에 관한 오류정보를 서버에 전송한다. 오류정보는 기본적으로 서버가 사전에 정의된 다양한 종류의 오류 중에서, 특정한 오류를 식별하도록 마련된 다양한 정보를 포함한다.
240 단계에서 단말은 제2오류의 해결을 위해 수집할 데이터에 관한 정책정보를 서버로부터 수신한다. 정책정보는, 앞서 단말이 서버에 전송한 오류정보를 포함하여 타 단말로부터 수집된 오류정보에 기초하여 사전에 정해진다. 제2오류는 제1오류와 동일하거나 상이할 수 있다. 오류정보 및 정책정보에 관한 구체적인 설명은 후술한다.
250 단계에서 단말은 정책정보가 지시하는 데이터를 메모리에 저장한다.
260 단계에서 단말은 다시 프로세스가 실행되는 동안 제2오류가 발생하는지 여부를 감지한다. 제2오류가 발생하지 않았다면, 단말은 추가적인 동작 없이 해당 프로세스의 실행을 계속한다.
반면에 제2오류가 발생하는 것으로 감지되면, 270 단계에서 단말은 메모리에 저장된 데이터를 서버에 전송한다.
이상의 오류 수집 프로세스에 따른 동작은 서버에 접속된 복수의 단말 각각이 수행할 수 있다. 그러나, 240 단계 이후의 동작은 복수의 단말이 모두 수행하는 것은 아니며 서버에 의해 선택된 일부의 단말들만이 수행한다. 즉, 복수의 단말 중에서 정책정보를 수신하는 단말은, 서버에 의해 선택된 일부에 해당한다.
이하, 어느 한 단말이 아닌 시스템 전체에서, 즉 서버 및 복수의 단말 사이에서 오류 수집 프로세스가 수행되는 과정에 관해 설명한다.
도 3은 본 발명의 실시예에 따른 서버 및 복수의 단말 사이에서 오류정보의 수집을 위해 수행되는 프로세스를 나타내는 예시도이다.
도 3에 도시된 바와 같이, 서버(300)는 복수의 단말(310, 320, 330, 340, 350)과 각기 통신 가능하게 접속된다. N개(N은 둘 이상의 자연수)의 단말(310, 320, 330, 340, 350)은 각기 하나 이상의 프로세스를 실행하며, 프로세스에서 오류가 발생하면 해당 오류에 관한 오류정보(301)를 서버(300)에 전송한다. 각 단말(310, 320, 330, 340, 350)이 서버(300)에 전송하는 오류정보(301)는 적어도 해당 단말(310, 320, 330, 340, 350)에서 발생한 오류의 타입을 나타낸다. 각 단말(310, 320, 330, 340, 350)에서 수행되는 프로세스는 다양하며, 동일 프로세스라고 하더라도 각 단말(310, 320, 330, 340, 350)에서 발생하는 오류의 타입은 상이할 수 있다.
오류정보(301)는 단말(310, 320, 330, 340, 350)의 종류 또는 식별정보, 오류가 발생한 어플리케이션 또는 프로세스의 종류 또는 식별정보, 단말(310, 320, 330, 340, 350)의 사용환경, 프로세스에서 발생한 오류의 타입 등에 관한 정보 등을 포함한다. 이로써, 서버(300)는 오류정보(301)에 기초하여 각 단말(310, 320, 330, 340, 350)에서 발생한 오류의 타입을 판단할 수 있다.
서버(300)는 각 단말(310, 320, 330, 340, 350)로부터 개별적으로 수신되는 오류정보(301)를 수집한다. 서버(300)는 수집된 오류정보(301)에 기초하여 발생되는 오류들 중에서, 가장 많이 발생한 오류의 타입을 선별한다. 예를 들어 오류들 중에서 가장 많이 발생한 오류의 타입이 "type1"이라면, 서버(300)는 오류정보(301)를 보낸 단말(310, 320, 330, 340, 350) 중에서 "type1"의 오류를 보고한 단말(310, 320, 340)을 선별한다.
서버(300)는 사전에 마련된 정책정보(302) 중에서 "type1"의 오류 타입에 대응하는 정책정보(302)를 획득한다. 정책정보(302)는 프로세스가 실행되는 동안 발생하는 오류의 타입에 따라서 프로세스로부터 수집되어야 할 데이터를 지시하는 정보이다. 일례로, 정책정보(302)는 개발자가 어플리케이션의 디버깅을 위해 필요하다고 판단되는 데이터를 지시하도록 마련된다. 정책정보(302)가 지시하는 데이터의 위치는 여러 가지 형태로 마련될 수 있는데, 예를 들면 프로세스를 실행하는 어플리케이션의 코드 주소이거나, 프로세스 내 스레드의 식별정보일 수 있다.
서버(300)는 "type1"의 오류를 나타내는 선별된 단말(310, 320, 340) 중에서, 기 설정된 조건을 만족하는 단말(320, 340)을 다시 선별한다. 상기한 조건은 여러 가지가 가능하며, 하나의 조건만이 적용되거나 또는 둘 이상의 조건이 우선순위에 따라서 적용될 수 있다. 예를 들어 본 조건은, 각 단말(310, 320, 340)의 메모리의 가용용량, 선별된 오류 타입이 가장 많이 발생한 단말(310, 320, 340)의 종류 또는 모델, 서버(300) 및 단말(310, 320, 340) 사이의 네트워크 상태, 단말(310, 320, 340)의 프로세서의 성능 등이 있다. 각 조건에 관한 자세한 설명은 후술한다.
예를 들어 서버(300)는 "type1"의 오류를 나타내는 선별된 단말(310, 320, 340) 중에서, 메모리의 가용용량이 문턱값보다 큰 단말(320, 340)을 선별한다. 서버(300)는 선별된 단말(320, 340)에, "type1"의 오류 타입에 대응하는 정책정보(302)를 전송한다.
서버(300)로부터 정책정보(302)를 수신한 단말(320, 340)은, 해당 정책정보(302)를 저장한다. 본 정책정보(302)는 기 설정된 시간, 예를 들면 3일 동안 유효하며, 그 이후에는 무효화된다. 단말(320, 340)은 정책정보(302)가 지시하는대로 해당 오류의 디버깅을 위한 디버깅용 데이터(303)를 수집하여 메모리에 저장한다. 앞서 서버(300)가 각 단말(310, 320, 340)의 메모리의 가용용량이 문턱값보다 큰지 여부를 판단하는 것은, 정책정보(302)가 지시하는 디버깅용 데이터(303)를 저장하기에 충분한 메모리의 가용용량을 가진 단말(320, 340)을 선별하기 위함이다.
단말(320, 340)은 정책정보(302)에 지시된 프로세스에서, 지시된 오류가 발생하는지를 모니터링한다. 단말(320, 340)은 지시된 오류가 발생하면, 메모리에 저장되어 있는 해당 오류의 디버깅을 위한 디버깅용 데이터(303)를 서버(300)에 전송한다.
단말(320, 340)이 메모리에 저장된 디버깅용 데이터(303)를 서버(300)에 전송하면, 서버(300)는 각 단말(320, 340)에서 수집된 디버깅용 데이터(303)를 개발자에게 제공함으로써 프로세스의 디버깅이 수행될 수 있도록 한다.
이와 같이, 서버(300)는 우선적으로 해결이 필요한 오류를 특정하고, 모든 단말(310, 320, 330, 340, 350)이 아닌 일부 단말(320, 340)로부터 오류의 해결에 필요한 디버깅용 데이터(303)를 수신할 수 있다.
이로써, 본 실시예에 따르면 중복된 정보를 최소화 하여 트래픽 및 메모리의 문제의 해소가 가능하다. 본 실시예에 따르면, 디버깅 대상 오류 및 데이터 수집 대상의 단말을 선별함으로써, 전체 수집 데이터의 양을 저감시키고, 유효한 수집 데이터를 증대시킬 수 있다.
서버(300)는 정책정보(302)에 따른 디버깅용 데이터(303)의 수집을 위해 샘플링된 단말(320, 340)로부터 문제 재현 환경 및 시나리오 관련 정보를 충분히 수집함으로써, 손쉽고 빠르게 문제에 대처가 가능하다.
또한 오류 유형에 따라 분석 및 해결을 위해 요구하는 디버깅용 데이터(303)의 종류가 다른데, 본 실시예에 따른 서버(300)는 오류 발생 유형에 따라 기기들을 샘플링하여 디버깅용 데이터(303)를 수집함으로써, 요구하는 디버깅용 데이터(303)를 집중하여 수집이 가능해진다.
또한, 본 실시예에 따르면 중복 데이터 필터링을 극대되므로, 서버(300)의 운용 비용이 절감되고, 문제 관련 정보가 극대화되어 문제 해결 비율이 증가된다.
이하, 서버의 동작에 관한 제어방법을 설명한다.
도 4는 본 발명의 실시예에 따른 서버의 제어방법을 나타내는 플로우차트이다.
도 4에 도시된 바와 같이, 다음 동작은 서버의 프로세서에 의해 실행된다.
410 단계에서 서버는 복수의 단말 각각으로부터, 해당 단말에서 발생한 프로세스의 오류에 관한 오류정보를 수집한다.
420 단계에서 서버는 수집된 오류정보에 의해 보고되는 오류 타입들 중 발생 회수가 가장 많은 오류 타입을 선별한다.
430 단계에서 서버는 현재 시점으로부터 소정 기간 이내에, 선별된 오류 타입에 대응하는 정책정보에 따라서 디버깅용 정보를 수집한 이력이 있는지 여부를 판단한다.
수집 이력이 있으면, 440 단계에서 서버는 그 다음으로 발생 회수가 많은 오류 타입을 선별한다. 수집 이력이 없으면, 서버는 그대로 다음 단계로 이행한다.
450 단계에서 서버는 선별된 오류 타입을 보고한 단말들 중에서 메모리 가용용량이 확보된, 즉 메모리 가용용량이 문턱값 이상인 단말들을 선별한다. 서버는 각 단말로부터 수집되는 오류정보에 해당 단말의 메모리의 가용 용량이 포함된 경우에, 오류정보에 기초하여 각 단말의 메모리의 가용 용량을 판단할 수 있다. 또는, 서버는 선별된 오류 타입을 보고한 단말들 각각에 메모리의 가용 용량에 관한 정보를 요청하고, 해당 정보를 각 단말로부터 수신할 수도 있다.
460 단계에서 서버는 메모리 가용용량이 확보된 단말들 중에서 기 설정된 기준에 따라서 N개의 단말을 선택한다. 여기서, N은 기 설정된 자연수이며, 단말들의 선택기준에 관해서는 후술한다. 한편, 본 실시예에서는 450 단계가 460 단계에 선행하지만, 설계 방식에 따라서는 반대로 460 단계가 450 단계에 선행할 수도 있고, 450 단계만 수행되고 460 단계가 수행되지 않을 수도 있다.
470 단계에서 서버는 선별된 오류 타입에 대응하는 정책정보를, 선택된 N개의 단말에 전송한다.
480 단계에서 서버는 정책정보를 전송한 N개의 단말로부터, 정책정보의 지시에 따라서 획득된 디버깅용 데이터를 수집한다.
이와 같이, 서버는 상대적으로 적은 수의 단말로부터 오류 해결에 필요한 디버깅용 데이터를 효율적으로 수집함으로써, 네트워크 자원 및 서버 자원을 절약할 수 있다.
이하, 오류정보의 예시에 관해 설명한다.
도 5는 본 발명의 실시예에 따른 서버가 각 단말로부터 수집한 단말 별 오류정보의 일부를 나타내는 예시도이다.
도 5에 도시된 바와 같이, 서버는 각 단말로부터 오류정보가 수신되면, 각 단말 별로 수집된 오류정보(500)를 리스트화 또는 DB화한다. 각 단말로부터 수신되는 오류정보는, 예를 들면 해당 단말을 식별할 수 있는 기기 ID, 단말의 종류 또는 모델을 나타내는 모델명, 단말에서 발생한 오류의 타입, 단말의 메모리 가용용량, 오류가 발생한 프로세스 ID 또는 어플리케이션 ID 등에 관한 정보를 포함한다. 여기서, 단말의 메모리 가용용량은 오류정보(500)에 포함될 수도 있지만, 이에 제한되지 않고, 오류정보(500)와는 별도로 주기적 또는 비주기적으로 서버에 보고될 수도 있다.
서버는 이와 같이 수집된 오류정보(500)에서, 디버깅용 정보를 수집하기 위한 오류의 타입을 특정한다. 기본적으로 서버는 각 단말로부터 가장 많이 보고된 오류 타입을 선별한다. 만일 선별된 오류 타입이 이미 기 설정된 시간 이내에 처리되어 디버깅용 정보가 수집된 이력이 있다면, 서버는 그 다음으로 많이 보고된 오류 타입을 선별할 수 있다.
예를 들어 "영상 비정상출력"이라는 오류 타입이 가장 많이 보고되었다면, 서버는 "영상 비정상출력"의 오류 타입을 보고한 기기 ID(도면 상에서는 제1기기, 제4기기, 제5기기 등) 중에서 정책정보를 전송할 기기 ID를 선별한다.
본 수집된 오류정보(500)에서, 메모리 가용용량은 정책정보가 지시하는 디버깅용 데이터를 저장하기 위한 용량을 나타낸다. 만일 메모리 가용용량이 문턱값보다 높지 않다면, 해당 단말은 정책정보가 지시하는 디버깅용 데이터를 저장하기에 충분한 메모리를 확보하지 못했다는 것을 의미한다. 문턱값이 3이라면, 서버는 "영상 비정상출력"을 보고한 단말 중에서 메모리 가용용량이 3보다 큰 제1기기, 제5기기를 정책정보를 전송할 단말로 선별한다.
만일 이와 같이 선별된 단말의 수가 상대적으로 많다고 판단되면, 서버는 추가적인 기준을 적용함으로써 정책정보를 전송할 단말의 수를 줄일 수 있다. 예를 들면, "영상 비정상출력"을 보고한 단말 중에서 가장 많은 모델이 A라면, 앞선 선별 결과에서 A 모델의 단말을 재선별한다. 또는, "영상 비정상출력"의 오류가 가장 많이 발생한 어플리케이션 ID가 "Vdplayer 2.0"이면, "Vdplayer 2.0"에서 오류가 발생하였다고 보고한 단말의 기기 ID를 앞선 선별 결과에서 재선별할 수 있다.
서버는 정책정보를 전송할 단말을 선별함에 있어서, 메모리의 가용용량이 문턱값보다 큰 단말, 선별된 오류 타입이 가장 많이 발생한 단말의 종류 또는 모델, 데이터의 송수신 속도가 문턱값보다 빠른 단말, 프로세서의 성능이 상대적으로 좋은 단말 등을 기준으로 사용할 수 있다. 이 외에도 다양한 기준이 적용될 수 있다.
이와 같이 단말이 선별되면, 서버는 선별된 단말에 정책정보를 전송함으로써 차후 해당 단말로부터 디버깅용 데이터를 수집한다.
이하, 정책정보의 예시에 관해 설명한다.
도 6은 본 발명의 실시예에 따른 서버에 마련된 정책정보의 일부를 나타내는 예시도이다.
도 6에 도시된 바와 같이, 서버는 다양한 오류 타입에 대응하여 수집할 디버깅용 데이터를 지시하는 정책정보(600)를 저장한다. 본 정책정보(600)는 특정한 오류 타입이 발생하였을 경우에, 해당 오류와 관련하여 수집해야 할 디버깅용 데이터의 종류 또는 식별정보를 지시한다. 예를 들면, 정책정보(600)는 "영상 비정상출력"의 오류 타입에 대해서는 영상 관련 로그파일을 수집하도록 지시하며, "오디오 비정상출력"의 오류 타입에 대해서는 오디오 연결 여부에 관한 정보 및 오디오 관련 로그파일을 수집하도록 지시하며, "어플리케이션 종료 시 문제 발생"의 오류 타입에 대해서는 어플리케이션의 식별정보 및 어플리케이션 관련 로그파일을 수집하도록 지시한다.
단말은 서버로부터 이와 같은 정책정보(600)가 수신되면, 정책정보(600)가 지시하는 오류에 관한 디버깅용 데이터를 메모리에 저장한다. 이후, 단말은 정책정보(600)가 지시하는 오류 타입과 동일한 오류가 발생하는지 여부를 모니터링한다. 예를 들어 정책정보(600)가 지시하는 오류가 "영상 비정상출력"이고, 이에 관한 디버깅용 데이터가 영상 관련 로그파일일 수 있다. 단말은, 정책정보(600)가 지시하는대로 영상 관련 로그파일을 획득하여 메모리에 저장하고, 차후 "영상 비정상출력"의 오류가 발생하면, 메모리에 저장된 영상 관련 로그파일을 서버에 디버깅용 데이터로서 전송한다.
즉, 단말은, 동작 중에, 정책정보(600)가 지시하는 영상 관련 로그파일을 지속적으로 메모리에 저장한다. 정책정보(600)는 영상 관련 오류 디버깅에 필요한 로그파일을 특정하며, 단말은, 해당 로그파일에 대응하는 특정 동작 중에 로그파일을 기록한다. 기록할 로그파일의 크기는 오류 디버깅에 필요한 정도 이상일 수 있다. 정책정보(600)는 오류 발생 시 전송할 로그파일의 크기를 특정할 수 있다. 단말은, 정책정보(600)에 지시된 전송할 로그파일의 크기를 확인하고, 로그파일을 저장할 메모리의 영역을 할당한다. 할당된 로그파일용 메모리의 영역은 전송할 로그파일의 크기 이상이다. 단말은, 동작 중, 해당 메모리의 영역에 로그파일을 기록하며, 기록된 영역에 데이터가 모두 채워지면, 새로운 데이터로 해당 영역의 로그파일을 업데이트한다. 만일, 해당 오류가 발생되면, 단말은, 오류가 발생된 시점에 해당 영역에 저장된 로그파일을 서버로 전송한다. 이 때, 전송되는 로그파일의 크기는 정책정보(600)에 지시된 크기에 대응할 수 있으며, 단말은, 오류가 발생된 시점을 기준으로 하여 이전에 기록된 로그파일의 데이터 중에서 해당 크기만큼의 데이터를 전송할 디버깅용 데이터로 정할 수 있다.
한편, 정책정보(600)는 수집할 디버깅용 데이터 중에서 디버깅용 데이터로 획득할 일부분의 주소를 추가적으로 지시할 수도 있다. "영상 비정상출력"의 오류 타입에서 수집할 디버깅용 데이터는 영상 관련 로그파일인데, 정책정보(600)는 수집할 디버깅용 데이터의 주소를 "전체"로 나타내고 있다. 이 경우에, 단말은 영상 관련 로그파일의 전체를 디버깅용 데이터로 획득한다. 또는, "어플리케이션 종료 시 문제 발생"의 오류 타입의 경우, 정책정보(600)는 어플리케이션 식별정보에 대해서는 "전체"를, 어플리케이션 관련 로그파일에 대해서는 특정 부분의 주소를 명시하고 있다. 이 경우에, 단말은 어플리케이션 식별정보 전체와, 어플리케이션 관련 로그파일에서 정책정보(600)가 지시하는 주소의 데이터를 디버깅용 데이터로 획득한다.
이와 같이, 단말은 서버로부터 수신한 정책정보(600)에 따라서 디버깅용 데이터를 획득하여 서버에 전송할 수 있다.
이상 설명한 바와 같이, 본 실시예에서는 특정 오류 타입의 보고를 서버에 보낸 복수의 단말 모두가 아닌, 서버에 의해 선별된 일부 단말이 정책정보의 지시에 따라서 디버깅용 데이터를 서버에 전송한다. 통상적으로 이러한 오류는 프로세스 내의 여러 스레드에 의해 발생하는데, 이하 프로세스 및 스레드와 관련하여 본 발명의 실시예의 효용성에 관해 설명한다.
도 7은 본 발명의 실시예에 따른 단말에서 동작하는 운영체제 하에서 동작하는 프로세스의 구조에 관한 블록도이다.
도 7에 도시된 바와 같이, 단말에서 동작하는 운영체제(700) 하에서는 적어도 하나 이상의 프로세스(710)가 실행된다. 프로세스(710)는 통상적으로 단말의 운영체제(700) 하에서 구동하는 어플리케이션의 인스턴스로서, 운영체제(700)로부터 시스템 자원을 할당받는 작업의 단위를 나타낸다. 시스템 자원의 예시로는, CPU 또는 프로세서의 연산의 할당, 운영되기 위해 필요한 주소 공간, Code(720), Data(730), Stack(760), Heap(740)의 구조로 되어 있는 독립된 메모리 영역이 있다.
Code(720)는 실행할 어플리케이션의 코드가 저장되는 메모리 영역이다. 단말의 프로세서는 Code(720)에 저장된 명령어를 읽어서 처리하게 된다.
Data(730)는 어플리케이션의 전역변수 및 정적변수가 저장되는 메모리 영역이다. Data(730)는 어플리케이션의 시작과 함께 할당되며, 어플리케이션이 종료되면 소멸한다.
Stack(760)은 함수의 호출과 관련된 지역변수 및 매개변수가 저장되는 메모리 영역이다. Stack(760)은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다. Stack(760)에 저장되는 함수의 호출 정보를 Stack Frame이라고 지칭한다.
Heap(740)은 사용자가 직접 관리하는 메모리 영역이다. Heap(740)은 사용자에 의해 메모리 공간이 동적으로 할당 또는 해제되며, 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
프로세스(710)는 기본적으로 메인 스레드를 비롯하여 하나 이상의 스레드(750)를 가진다. 각 프로세스(710)는 별도의 주소 공간에서 실행되며, 하나의 프로세스(710)는 타 프로세스의 변수나 자료구조에 접근할 수 없다. 하나의 프로세스(710)가 타 프로세스의 자원에 접근하려면 IPC(Inter-Process Communication)을 사용해야 한다.
스레드(750)는 프로세스(710) 내에서 실행되는 여러 흐름의 단위로서, 프로세스(710)의 특정한 수행 경로이고, 프로세스(710)가 할당받은 자원을 이용하는 실행의 단위를 나타낸다. 스레드(750)는 프로세스(710) 내에서 각각 Stack(760)만 따로 할당받고, Code(720), Data(730), Heap(740)은 공유한다. 즉, 하나의 스레드(750)가 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 그 변경 결과를 즉시 볼 수 있다.
만일 프로세스(710)에서 오류가 발생하였다면, 프로세스(710) 내에서 여러 스레드(750)가 상호 연계되어 실행되는 특성 상, 오류의 원인이 어느 한 스레드(750)에서만 있을 경우는 많지 않을 것이다. 단말은 멀티 스레드 방식을 사용하여 프로세스를 처리하게 된다. 각 스레드(750)는 Stack(760)을 제외한 나머지 메모리 영역을 공유하므로, 어느 한 스레드(750)가 타 스레드에 영향을 미치게 된다. 따라서, 어느 한 스레드(750), 예를 들면 메인 스레드에 관한 정보만으로는 프로세스(710)에서 발생하는 오류의 디버깅이 곤란할 수 있다.
관련 기술에 따른 단말의 경우에, 단말은 오류가 발생하면 프로세스 내 기 설정된 스레드, 예를 들면 메인 스레드에 관한 Stack(760) 정보를 디버깅용 데이터로 획득하여 저장하고, 저장된 데이터를 서버로 전송한다. 단말의 종류, 모델 또는 사용환경에 따라서 메모리의 가용용량이 달라질 수 있는데, 어떠한 단말은 이 디버깅용 데이터를 저장하기에 충분한 메모리의 가용용량을 가지지 못한다. 따라서, 관련 기술에 따른 단말은 최소한의 디버깅용 데이터만을 획득하여 서버에 전송하지만, 이와 같이 획득된 디버깅용 데이터로는 오류의 원인을 규명하기에 부족할 수 있다.
또한, 이와 같이 서버에 접속된 많은 단말들이 각기 디버깅용 데이터를 서버에 전송하게 되면, 서버 입장에서는 많은 데이터가 네트워크를 통해 수집됨에도 불구하고, 정작 오류 해결에 필요한 데이터가 부족한 상황이 발생할 수 있다.
이에 비해, 본 발명의 실시예에 따르면, 서버는 여러 단말로부터 오류정보가 수집되면, 접속된 단말들 중에서 샘플링된 단말들에 정책정보를 전송하고, 샘플링된 단말로부터 정책정보에 기초한 디버깅용 데이터를 수집한다. 이로써, 본 실시예는 관련 기술에 비해 서버가 수집하는 데이터의 총량을 줄이면서도, 오류 해결에 필요한 디버깅용 데이터에 집중해서 수집되도록 할 수 있다.
이러한 디버깅용 데이터의 예시로는, 앞서 설명한 바와 같이 어플리케이션에 관한 로그파일이거나, 특정 스레드의 Stack(760) 정보일 수 있다. 또는, 프로세스의 종류 및 특성에 따라서 부가적인 데이터가 디버깅용 데이터에 포함될 수 있다. 예를 들어 정책정보는, 영상 재생 프로세스에서 오류가 발생한 경우에, 전체 영상컨텐트 데이터 중에서 오류가 발생한 구간에서 추출된 영상컨텐트 데이터를 디버깅용 데이터로 지시할 수 있다.
한편, 앞선 실시예에서는 하나의 서버가 모든 동작을 수행하는 것으로 표현하였으나, 복수의 서버가 각기 동작을 분담하여 수행하는 것도 가능하다. 이하, 이러한 실시예에 관해 설명한다.
도 8은 본 발명의 실시예에 따른 복수의 서버가 오류정보의 수집을 위해 수행하는 프로세스를 나타내는 예시도이다.
도 8에 도시된 바와 같이, 복수의 서버(801, 802, 803, 804)는 복수의 단말(810, 820, 830, 840, 850)과 각기 통신 가능하게 접속된다. 복수의 서버(801, 802, 803, 804)는 기능 별로 구분된 오류정보 수집 서버(801), 분석 서버(802), 디버깅용 데이터 수집 서버(803), 디버깅용 데이터 분석 서버(804)를 포함한다.
각 단말(810, 820, 830, 840, 850)은 각기 하나 이상의 프로세스를 실행하며, 프로세스에서 오류가 발생하면 해당 오류에 관한 오류정보를 오류정보 수집 서버(801)에 전송한다. 각 단말(810, 820, 830, 840, 850)이 오류정보 수집 서버(801)에 전송하는 오류정보는 적어도 해당 단말(810, 820, 830, 840, 850)에서 발생한 오류의 타입을 나타낸다.
오류정보 수집 서버(801)는 이와 같이 수집된 오류정보를 분석 서버(802)에 전달한다. 분석 서버(802)는 전달받은 오류정보에 기초하여 각 단말(810, 820, 830, 840, 850)에서 발생한 오류의 타입을 판단하고, 가장 많이 발생한 오류의 타입을 선별한다. 예를 들어 수집된 오류정보 중에서 가장 많이 발생한 오류의 타입이 "type1"이라면, 분석 서버(802)는 여러 단말(810, 820, 830, 840, 850) 중에서 "type1"의 오류를 보고한 단말(810, 820, 840)을 선별한다.
분석 서버(802)는 사전에 마련된 정책정보 중에서 "type1"의 오류 타입에 대응하는 정책정보를 획득한다. 정책정보는 프로세스가 실행되는 동안 발생하는 오류의 타입에 따라서 프로세스로부터 수집되어야 할 데이터를 지시하는 정보이다. 정책정보는 개발자가 어플리케이션의 디버깅을 위해 필요하다고 판단되는 데이터를 지시하도록 마련된다.
분석 서버(802)는 "type1"의 오류를 나타내는 선별된 단말(810, 820, 840) 중에서, 기 설정된 조건을 만족하는 단말(820, 840)을 다시 선별한다. 상기한 조건은 여러 가지가 가능하며, 하나의 조건만이 적용되거나 또는 둘 이상의 조건이 우선순위에 따라서 적용될 수 있다. 예를 들어 본 조건은, 각 단말(810, 820, 840)의 메모리의 가용용량, 선별된 오류 타입이 가장 많이 발생한 단말(810, 820, 840)의 종류 또는 모델 등이 있다. 예를 들어 분석 서버(802)는 "type1"의 오류를 나타내는 선별된 단말(810, 820, 840) 중에서, 메모리의 가용용량이 문턱값보다 큰 단말(820, 840)을 선별한다. 서버(800)는 선별된 단말(820, 840)에, "type1"의 오류 타입에 대응하는 정책정보를 전송한다.
분석 서버(802)로부터 정책정보를 수신한 단말(820, 840)은, 해당 정책정보를 저장하고, 정책정보가 지시하는 오류의 디버깅을 위한 디버깅용 데이터를 수집하여 메모리에 저장한다. 단말(820, 840)은 정책정보에 대응하는 오류가 발생한 프로세스에서 동일한 오류가 발생하는지를 모니터링한다. 단말(820, 840)은 동일 오류가 발생하면, 저장된 디버깅용 데이터를 디버깅용 데이터 수집 서버(803)에 전송한다.
디버깅용 데이터 수집 서버(803)는 각 단말(820, 840)에서 수집된 디버깅용 데이터(808)를 디버깅용 데이터 분석 서버(804)에 전송함으로써 프로세스의 디버깅이 수행될 수 있도록 한다.
이와 같이, 본 발명의 실시예에 따른 동작은 복수의 서브(801, 802, 803, 804)에 의해 분담되어 수행될 수도 있다.
이상 실시예들에서 설명한 바와 같은 장치의 동작은, 해당 장치에 탑재된 인공지능에 의해 수행될 수 있다. 인공지능은 기계 학습 알고리즘을 활용하여 다양한 제반 시스템에 적용될 수 있다. 인공지능 시스템은 인간 수준 내지는 인간 수준에 버금가는 지능을 구현하는 컴퓨터 시스템으로서, 기계, 장치 또는 시스템이 자율적으로 학습하고 판단하며, 사용 경험의 누적에 기반하여 인식률 및 판단 정확도가 향상되는 시스템이다. 인공지능 기술은 입력되는 데이터들의 특징을 스스로 분류하고 학습하는 알고리즘을 이용한 기계학습(deep-running) 기술 및 알고리즘을 활용하여, 인간의 두뇌의 인지, 판단 등의 기능을 모사하는 요소 기술들로 구성된다.
요소 기술들은, 예를 들면 인간의 언어와 문자를 인식하는 언어적 이해 기술, 사물을 인간의 시각처럼 인식하는 시각적 이해 기술, 정보를 판단하여 논리적으로 추론하고 예측하는 추론 및 예측 기술, 인간의 경험 정보를 지식 데이터로 처리하는 지식 표현 기술, 차량의 자율 주행이나 로봇의 움직임을 제어하는 동작 제어 기술 중 적어도 어느 하나를 포함한다.
여기서, 언어적인 이해는 인간의 언어 또는 문자를 인식하고 응용 처리하는 기술로서, 자연어의 처리, 기계 번역, 대화 시스템, 질의 응답, 음성 인식 및 합성 등을 포함한다.
추론 예측은 정보를 판단하여 논리적으로 예측하는 기술로서, 지식 및 확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다.
지식 표현은 인간의 경험 정보를 지식 데이터로 자동화 처리하는 기술로서, 데이터의 생성 및 분류와 같은 지식 구축, 데이터의 활용과 같은 지식 관리 등을 포함한다.
본 발명의 예시적 실시예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이러한 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 삭제 가능 또는 재기록 가능 여부와 상관없이, ROM 등의 저장 장치와 같은 휘발성 또는 비휘발성 저장 장치, 또는 예를 들어, RAM, 메모리 칩, 장치 또는 집적 회로와 같은 메모리, 또는 예를 들어 CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 이동 단말 내에 포함될 수 있는 메모리는 본 발명의 실시 예들을 구현하는 지시들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다. 본 저장 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어의 기술 분야에서 숙련된 기술자에게 공지되어 사용 가능한 것일 수도 있다.
110 : 단말
111 : 통신부
116 : 프로세서
120 : 서버
121 : 서버통신부
123 : 서버프로세서

Claims (13)

  1. 전자장치에 있어서,
    메모리와,
    서버와 통신 가능하게 마련된 통신회로와,
    동작 중 발생되는 제1오류에 기초하여, 상기 제1오류에 관한 오류정보를 상기 서버에 전송하도록 상기 통신회로를 제어하고,
    상기 오류정보에 기초하여 정해진 제2오류의 해결을 위해 수집할 데이터에 관한 정보를 상기 서버로부터 수신하고,
    상기 수신된 정보에 기초하여 동작 중 생성되는 상기 데이터를 상기 메모리에 저장하고,
    동작 중 발생되는 상기 제2오류에 기초하여, 상기 저장된 데이터를 상기 서버에 전송하도록 상기 통신회로를 제어하는 프로세서를 포함하는 전자장치.
  2. 제1항에 있어서,
    상기 제2오류의 해결을 위해 수집할 데이터는, 상기 전자장치로부터 상기 서버에 전송한 상기 오류정보와, 복수의 타 전자장치로부터 상기 서버에 의해 각기 수집된 오류정보에 기초하여 정해진 전자장치.
  3. 제2항에 있어서,
    상기 제2오류는, 상기 전자장치 및 상기 복수의 타 전자장치 각각으로부터 수집된 상기 오류정보가 보고하는 오류 중에서 발생 회수가 가장 많은 오류인 전자장치.
  4. 제1항에 있어서,
    상기 프로세서는, 상기 제2오류의 해결을 위해 수집할 데이터를 저장 가능한 상기 메모리의 가용 용량이 문턱값보다 높으면 상기 정보를 수신하고, 상기 가용 용량이 상기 문턱값보다 높지 않으면 상기 정보를 수신하지 않는 전자장치.
  5. 제4항에 있어서,
    상기 프로세서는, 상기 서버가 상기 메모리의 가용 용량에 대응하여 선택적으로 상기 수집할 데이터에 관한 정보를 전송하도록, 상기 메모리의 가용 용량을 나타내는 정보를 상기 서버에 전송하는 전자장치.
  6. 제1항에 있어서,
    상기 제1오류는 상기 제2오류와 동일한 전자장치.
  7. 전자장치의 제어방법에 있어서,
    동작 중 발생되는 제1오류에 기초하여, 상기 제1오류에 관한 오류정보를 서버에 전송하는 단계와,
    상기 오류정보에 기초하여 정해진 제2오류의 해결을 위해 수집할 데이터에 관한 정보를 상기 서버로부터 수신하는 단계와,
    상기 수신된 정보에 기초하여 동작 중 생성되는 상기 데이터를 메모리에 저장하는 단계와,
    동작 중 발생되는 상기 제2오류에 기초하여, 상기 저장된 데이터를 상기 서버에 전송하는 단계를 포함하는 전자장치의 제어방법.
  8. 제7항에 있어서,
    상기 제2오류의 해결을 위해 수집할 데이터는, 상기 전자장치로부터 상기 서버에 전송한 상기 오류정보와, 복수의 타 전자장치로부터 상기 서버에 의해 각기 수집된 오류정보에 기초하여 정해진 전자장치의 제어방법.
  9. 제8항에 있어서,
    상기 제2오류는, 상기 전자장치 및 상기 복수의 타 전자장치 각각으로부터 수집된 상기 오류정보가 보고하는 오류 중에서 발생 회수가 가장 많은 오류인 전자장치의 제어방법.
  10. 제7항에 있어서,
    상기 제2오류의 해결을 위해 수집할 데이터를 저장 가능한 상기 메모리의 가용 용량이 문턱값보다 높으면 상기 정보를 수신하고, 상기 가용 용량이 상기 문턱값보다 높지 않으면 상기 정보를 수신하지 않는 단계를 포함하는 전자장치의 제어방법.
  11. 제10항에 있어서,
    상기 서버가 상기 메모리의 가용 용량에 대응하여 선택적으로 상기 수집할 데이터에 관한 정보를 전송하도록, 상기 메모리의 가용 용량을 나타내는 정보를 상기 서버에 전송하는 단계를 포함하는 전자장치의 제어방법.
  12. 제7항에 있어서,
    상기 제1오류는 상기 제2오류와 동일한 전자장치의 제어방법.
  13. 서버에 있어서,
    복수의 단말과 통신 가능하게 마련된 통신회로와,
    상기 복수의 단말 각각으로부터 수집되는 동작 중 발생한 오류에 관한 오류정보에 기초하여 오류를 선별하고,
    상기 선별된 오류에 관한 상기 오류정보를 보고한 상기 단말들 중에서 일부의 상기 단말들을 선별하고,
    상기 선별된 오류의 해결을 위해 수집할 데이터에 관한 정보를 상기 선별된 단말들에 전송하도록 상기 통신회로를 제어하고,
    상기 선별된 단말들 각각으로부터 상기 전송한 정보에 기초하여 생성된 상기 데이터를 수집하는 프로세서를 포함하는 서버.
KR1020190016468A 2019-02-13 2019-02-13 전자장치 및 그 제어방법 KR20200098847A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190016468A KR20200098847A (ko) 2019-02-13 2019-02-13 전자장치 및 그 제어방법
EP20755006.2A EP3877858A4 (en) 2019-02-13 2020-02-11 ELECTRONIC DEVICE AND ITS CONTROL METHOD
PCT/KR2020/001900 WO2020166935A1 (en) 2019-02-13 2020-02-11 Electronic apparatus and control method thereof
US16/788,985 US11113130B2 (en) 2019-02-13 2020-02-12 Electronic apparatus and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190016468A KR20200098847A (ko) 2019-02-13 2019-02-13 전자장치 및 그 제어방법

Publications (1)

Publication Number Publication Date
KR20200098847A true KR20200098847A (ko) 2020-08-21

Family

ID=71944655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190016468A KR20200098847A (ko) 2019-02-13 2019-02-13 전자장치 및 그 제어방법

Country Status (4)

Country Link
US (1) US11113130B2 (ko)
EP (1) EP3877858A4 (ko)
KR (1) KR20200098847A (ko)
WO (1) WO2020166935A1 (ko)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565220B2 (en) 2006-09-28 2009-07-21 Lam Research Corporation Targeted data collection architecture
US7542985B1 (en) * 2008-06-12 2009-06-02 International Business Machines Corporation System and method for log retrieval priority
US9294946B2 (en) * 2010-08-27 2016-03-22 Qualcomm Incorporated Adaptive automatic detail diagnostic log collection in a wireless communication system
KR101561233B1 (ko) 2014-04-07 2015-10-19 주식회사 모코플렉스 사용자 단말 타겟팅 시스템 및 방법
JP2017010431A (ja) * 2015-06-25 2017-01-12 京セラドキュメントソリューションズ株式会社 デバッグシステム
KR102268699B1 (ko) * 2015-06-29 2021-06-28 삼성전자주식회사 저장 장치의 동작 방법, 호스트 장치의 동작 방법, 그리고 저장 장치 및 호스트 장치를 포함하는 사용자 시스템의 동작 방법
KR102509540B1 (ko) * 2015-06-30 2023-03-14 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
US9665467B2 (en) * 2015-06-30 2017-05-30 International Business Machines Corporation Error and solution tracking in a software development environment
US9891982B2 (en) * 2015-12-04 2018-02-13 Microsoft Technology Licensing, Llc Error handling during onboarding of a service
US9811442B2 (en) * 2015-12-11 2017-11-07 International Business Machines Corporation Dynamic trace level control
GB2553784B (en) * 2016-09-13 2019-02-06 Advanced Risc Mach Ltd Management of log data in electronic systems
US10120779B1 (en) * 2016-11-08 2018-11-06 Amazon Technologies, Inc. Debugging of hosted computer programs
JP2018156606A (ja) * 2017-03-21 2018-10-04 東芝メモリ株式会社 通信制御装置、通信制御方法およびコンピュータプログラム
JP7230465B2 (ja) * 2018-11-30 2023-03-01 株式会社リコー エラー表示システム、エラー表示方法、情報処理装置

Also Published As

Publication number Publication date
EP3877858A4 (en) 2022-01-12
US20200257580A1 (en) 2020-08-13
WO2020166935A1 (en) 2020-08-20
EP3877858A1 (en) 2021-09-15
US11113130B2 (en) 2021-09-07

Similar Documents

Publication Publication Date Title
KR102236522B1 (ko) 정보를 처리하기 위한 방법 및 장치
US9684562B2 (en) Automatic serial starting of resource groups on failover based on the prediction of aggregate resource usage
US20150149822A1 (en) Event handling in storage area networks
US8495430B2 (en) Generate diagnostic data for overdue thread in a data processing system
US9497095B2 (en) Dynamic control over tracing of messages received by a message broker
CN110365762B (zh) 服务处理方法、装置、设备及存储介质
CN104205060A (zh) 提供用于ha集群的管理程序的基于应用的监控及恢复
US20140067886A1 (en) Information processing apparatus, method of outputting log, and recording medium
KR102650976B1 (ko) 전자장치 및 그 제어방법
CN110764962A (zh) 日志处理方法和装置
US20210004272A1 (en) Electronic device and method for controlling same
KR20200098847A (ko) 전자장치 및 그 제어방법
KR20210004288A (ko) 전자장치 및 그 제어방법
KR20220169695A (ko) 전자장치 및 그 제어방법
CN103617077A (zh) 智能型云端化移转的方法与***
US11726821B2 (en) Electronic apparatus and control method thereof
CN116010026B (zh) 一种基于虚拟路径的微服务控制方法及控制***
US10671433B2 (en) Load balancing and job scheduling manager within a high-performance computing environment
US20230259457A1 (en) Electronic apparatus and control method thereof
KR20110068302A (ko) 유닉스/리눅스 시스템에서의 셸 기반의 접근제어시스템 및 접근제어방법
KR20230114004A (ko) 전자장치 및 그 제어방법
CN115981777A (zh) 用于容器化应用的动态支持容器
CN114461408A (zh) 多核***的核间交互方法、装置、设备及存储介质
CN118192994A (zh) 应用程序的部署方法及装置、存储介质、电子设备
CN114385279A (zh) 子进程管理方法、装置、设备及介质

Legal Events

Date Code Title Description
A201 Request for examination