KR20200082422A - Lightweight crash report based debugging method considering security - Google Patents

Lightweight crash report based debugging method considering security Download PDF

Info

Publication number
KR20200082422A
KR20200082422A KR1020180173011A KR20180173011A KR20200082422A KR 20200082422 A KR20200082422 A KR 20200082422A KR 1020180173011 A KR1020180173011 A KR 1020180173011A KR 20180173011 A KR20180173011 A KR 20180173011A KR 20200082422 A KR20200082422 A KR 20200082422A
Authority
KR
South Korea
Prior art keywords
information
error
crash report
lightweight
debugging method
Prior art date
Application number
KR1020180173011A
Other languages
Korean (ko)
Other versions
KR102165747B1 (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 KR1020180173011A priority Critical patent/KR102165747B1/en
Publication of KR20200082422A publication Critical patent/KR20200082422A/en
Application granted granted Critical
Publication of KR102165747B1 publication Critical patent/KR102165747B1/en

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
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

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

The present invention has a debugging method based on a lightweight crash report in consideration of security. The debugging method comprises: an execution step of executing a program in an electronic device; a generation step of automatically generating a crash report while collecting information on a crash and essential information required for error tracking if the crash occurs while the program is executed; an analysis step of receiving the generated crash report and analyzing information contained in the crash report to extract error information; and a tracing step of specifying a location of an error by tracking the extracted error information.

Description

보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법{Lightweight crash report based debugging method considering security}Lightweight crash report based debugging method considering security}

본 발명은 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법에 대한 것으로, 보다 상세하게는 오류 추적에 요구되는 필수 정보만 포함된 고품질 크래시 리포트로 인해 리포트의 크기 경량화, 가독성 및 보안성을 향상할 수 있으며, 생성한 크래시 리포트를 이용하여 소스 코드의 라인 단위까지 오류 추적할 수 있는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법에 관한 것이다.The present invention relates to a lightweight crash report-based debugging method in consideration of security, and more specifically, due to a high-quality crash report that includes only essential information required for error tracking, it is possible to improve the report size, readability, and security. It is related to a lightweight crash report-based debugging method considering security that can trace errors down to the line unit of the source code using the generated crash report.

최근에는 사용자에게 제공되는 소프트웨어의 기능이 점차 복잡해지고 있다. 이에 따라 지난 수십 년간 소프트웨어의 규모와 함께 개발 비용 또한 커지는 추세이다. 이 같은 상황에서 소프트웨어의 생애주기 중, 가장 많은 비용이 소요되는 부분은 디버깅으로 전체 개발 비용의 약 50%를 차지한다.In recent years, the functions of software provided to users have become increasingly complex. Accordingly, in the past decades, the size of software and development costs have increased. In this situation, debugging is the most costly part of the software life cycle, accounting for about 50% of the total development cost.

또한, 디버깅 비용은 소프트웨어의 생애주기가 진행됨에 따라 비례하여 증가하기 때문에 비용이 가장 크게 발생하는 부분은 소프트웨어가 배포된 이후 즉, 유지 및 보수 단계에 수행하는 디버깅이다. In addition, since the cost of debugging increases proportionally as the life cycle of the software progresses, the most costly part is debugging performed after the software is distributed, that is, in the maintenance and maintenance phase.

종래의 디버깅하는 과정은 다음과 같다.The conventional debugging process is as follows.

먼저, 실행 환경에서 배포된 소프트웨어를 실행하고, 오류 발생 시 크래시 리포트 생성한다. 그리고 개발팀에 전달된 크래시 리포트를 분석한 다음, 오류의 위치를 추적하여, 오류를 수정한다. 이후 테스트를 거쳐, 모든 테스트가 통과되었을 때, SW를 재배포한다. First, the software distributed in the execution environment is executed, and a crash report is generated when an error occurs. Then, the crash report delivered to the development team is analyzed, and the location of the error is tracked to correct the error. Subsequently, the software is redistributed when all the tests have passed.

즉, 종래의 디버깅하는 과정은 각 단계에 걸쳐 많은 연구가 진행되고 있으며, 종래의 크래시 리포트 생성 및 분석 그리고 오류 추적의 세 단계에서 다음과 같은 한계점이 있다.That is, in the conventional debugging process, many studies are being conducted in each stage, and there are the following limitations in the three stages of conventional crash report generation and analysis and error tracking.

첫 번째로 종래의 크래시 리포트 생성 단계에서는 오류 발생 시 운영체제로부터 시스템 정보, 메모리 덤프, 크래시 덤프와 같은 내용을 포함한 덤프 파일을 생성한다. 가공되지 않고 생성된 덤프 파일은 전체를 크래시 리포트에 첨부하는데 이 경우 사용자의 실행 환경에 대한 다양한 정보를 개발자가 확인할 수 있다는 장점이 있으나, 가공되지 않은 정보로 인해 오류 추적 단계에서 의미 없는 데이터가 포함된다.First, in the conventional crash report generation step, when an error occurs, a dump file including contents such as system information, memory dump, and crash dump is generated from the operating system. The dump file generated without processing is attached to the crash report, which has the advantage that the developer can check various information about the user's execution environment, but the raw information contains meaningless data in the error tracking step. do.

또한, 첨부되는 데이터 중에서 사용자가 사용하는 다른 모듈의 정보 및 개인 정보가 포함될 가능성이 있어 보안 측면에서도 취약한 단점이 있다.In addition, there is a possibility that the information and personal information of other modules used by the user among the attached data may be included, and thus there is a vulnerability in terms of security.

두 번째로 종래의 크래시 리포트 분석 단계에서는 개발자에게 전달된 크래시 리포트에 첨부된 데이터를 가공하여 개발자가 덤프 파일의 내용을 보다 이해하기 쉽게 하거나 오류 추적에 용이한 정보를 생성한다. 그러나 상술한 바와 같이, 오류 추적에 불필요한 데이터와 함께 수집된 덤프 데이터들로 인해서 정보 가공에 많은 시간이 소요된다. Second, in the conventional crash report analysis step, the data attached to the crash report delivered to the developer is processed to make it easier for the developer to understand the contents of the dump file or to facilitate error tracking. However, as described above, it takes a lot of time to process information due to dump data collected along with data unnecessary for error tracking.

또한, 가공된 오류 정보(또는 크래시 정보)라도 분석해야 할 양이 많아져 개발자에게 많은 시간과 노력을 요구한다.In addition, the amount of processed error information (or crash information) needs to be analyzed, which requires a lot of time and effort from the developer.

세 번째로 종래의 오류 추적 단계에서 기존 기술들은 분석된 오류 정보와 소스 코드를 사용해 파일 또는 함수 단위의 오류를 추적한다. 그러나 추적 단위가 크기 때문에 정확한 오류 위치를 찾는데 개발자의 추가적인 시간과 노력이 요구된다. 오류 추적 도구인 WinDbg의 경우 덤프 파일과 소스 코드 그리고 통합 개발 환경에서 디버깅 모드에 사용되는 프로그램 데이터베이스 정보를 함께 사용하여 라인 수준의 오류 추적을 수행한다. Third, in the conventional error tracking step, existing technologies use the analyzed error information and source code to track errors in a file or function unit. However, due to the large tracking unit, it takes additional developer time and effort to find the exact location of the error. In the case of WinDbg, an error tracking tool, line-level error tracking is performed by using dump files, source code, and program database information used in debugging mode in an integrated development environment.

이로 인해 개발자의 노력을 크게 감소시켜 줄 수 있으나, 덤프 파일 전체를 입력으로 사용하여 불필요한 정보 분석 및 가공으로 인한 문제점이 발생하며, 프로그램 데이터베이스 파일의 위치를 특정할 수 없는 경우에는 라인 수준의 오류 추적이 불가능해 추가적인 개발자의 시간과 노력이 요구되는 한계점이 있다.This can greatly reduce the developer's effort, but causes problems due to unnecessary information analysis and processing by using the entire dump file as input, and traces line-level errors when the location of the program database file cannot be specified. This is impossible, and there is a limitation that requires additional developer time and effort.

본 발명에서는 오류 추적에 요구되는 필수 정보만 포함된 고품질 크래시 리포트로 인해 리포트의 크기 경량화, 가독성 및 보안성을 향상할 수 있으며, 생성한 크래시 리포트를 이용하여 소스 코드의 라인 단위까지 오류 추적할 수 있는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 제안하고자 한다.In the present invention, due to a high-quality crash report containing only essential information required for error tracking, the size of the report can be reduced in weight, readability and security, and the generated crash report can be used to track errors down to the line unit of the source code. We would like to propose a lightweight crash report-based debugging method considering security.

본 발명은, 전자 기기에서 프로그램을 실행하는 실행 단계, 프로그램이 실행하는 도중 크래시가 발생하면, 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동 생성하는 생성 단계, 생성된 크래시 리포트를 제공받아 크래시 리포트에 담긴 정보를 분석하여 오류 정보를 추출하는 분석 단계 및 추출된 오류 정보를 추적하여 오류의 위치를 특정하는 추적 단계를 포함하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 구비한다.The present invention is an execution step of executing a program in an electronic device, and when a crash occurs while the program is running, a generation step of automatically generating a crash report while collecting information on the crash and essential information required for error tracking is generated. A lightweight crash report-based debugging method considering security, including an analysis step of receiving a crash report and analyzing the information contained in the crash report to extract error information, and a tracking step of tracking the extracted error information to specify the location of the error To be equipped.

본 발명은 오류 추적에 요구되는 필수 정보만 포함된 고품질 크래시 리포트로 인해 리포트의 크기 경량화, 가독성 및 보안성을 향상할 수 있다. The present invention can improve the size, readability, and security of a report due to a high-quality crash report containing only essential information required for error tracking.

또한, 본 발명은 생성한 경량의 크래시 리포트를 이용하여 소스 코드의 라인 단위까지 오류 추적할 수 있기 때문에 빠르고 정확하게 오류를 수정할 수 있다.In addition, since the present invention can track errors down to the line unit of the source code using the generated lightweight crash report, errors can be corrected quickly and accurately.

또한, 본 발명은 개인정보 보안이 가능한 경량 크래시 리포트 생성하고, 분석 및 오류 추적 단계를 자동화함으로써 디버깅 비용 감소시킬 수 있다.In addition, the present invention can reduce debugging costs by generating a lightweight crash report capable of personal information security and automating the analysis and error tracking steps.

도 1은 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 시스템을 설명하기 위한 것이다.
도 2는 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 설명하기 위한 것이다.
도 3은 본 발명의 일실시 예에 따라 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 자세하게 설명하기 위한 것이다.
도 4는 본 발명의 일실시 예에 따른 환경별 상대적 가상 주소에 따른 크래시 지점을 설명하기 위한 것이다.
도 5는 본 발명의 일실시 예에 따라 상대 가상주소와 소스 코드 라인 맵핑 정보를 설명하기 위한 것이다.
도 6은 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 이용하여 오류 추적 분석 시간 및 수집 데이터 항목 비교한 것이다.
1 is for explaining a lightweight crash report-based debugging system considering security according to an embodiment of the present invention.
2 is for explaining a lightweight crash report based debugging method considering security according to an embodiment of the present invention.
3 is a detailed description of a lightweight crash report based debugging method considering security according to an embodiment of the present invention.
4 is for explaining a crash point according to a relative virtual address for each environment according to an embodiment of the present invention.
5 is for describing relative virtual address and source code line mapping information according to an embodiment of the present invention.
6 is a comparison of error tracking analysis time and collected data items using a lightweight crash report-based debugging method considering security according to an embodiment of the present invention.

이하 설명하는 기술은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나 이는 이하 설명하는 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 이하 설명하는 기술의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.The technique described below may be applied to various changes and may have various embodiments, and specific embodiments will be illustrated in the drawings and described in detail. However, this is not intended to limit the technology described below to specific embodiments, and should be understood to include all modifications, equivalents, and substitutes included in the spirit and scope of the technology described below.

제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 해당 구성요소들은 상기 용어들에 의해 한정되지는 않으며, 단지 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 이하 설명하는 기술의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.Terms such as first, second, A, B, etc. can be used to describe various components, but the components are not limited by the above terms, and only for distinguishing one component from other components Used only. For example, the first component may be referred to as a second component, and similarly, the second component may be referred to as a first component without departing from the scope of the technology described below. The term and/or includes a combination of a plurality of related described items or any one of a plurality of related described items.

본 명세서에서 사용되는 용어에서 단수의 표현은 문맥상 명백하게 다르게 해석되지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함한다." 등의 용어는 실시된 특징, 개수, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 의미하는 것이지, 하나 또는 그 이상의 다른 특징들이나 개수, 단계 동작 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하지 않는 것으로 이해되어야 한다.In the terminology used herein, a singular expression should be understood to include a plural expression unless it is clearly interpreted differently in context, and "includes." Terms such as the meaning, number, steps, operations, components, parts, or combinations thereof are meant to exist, and one or more other features or numbers, steps, operation components, parts, or combinations thereof It should be understood that it does not exclude the possibility of the presence or addition of.

도면에 대한 상세한 설명을 하기에 앞서, 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.Prior to the detailed description of the drawings, it is intended to clarify that the division of components in this specification is only divided by the main functions of each component. That is, two or more components to be described below may be combined into one component or one component may be divided into two or more for each subdivided function. In addition, each of the constituent parts to be described below may additionally perform some or all of the functions of other constituent parts in addition to the main functions of the constituent parts, and some of the main functions of the constituent parts are different. Needless to say, it may also be carried out in a dedicated manner.

또, 방법 또는 동작 방법을 수행함에 있어서, 상기 방법을 이루는 각 과정들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 과정들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.In addition, in performing the method or the method of operation, each process constituting the method may occur differently from the specified order unless a specific order is explicitly stated in the context. That is, each process may occur in the same order as specified, may be performed substantially simultaneously, or may be performed in the reverse order.

도 1은 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 시스템을 설명하기 위한 것이다.1 is for explaining a lightweight crash report-based debugging system considering security according to an embodiment of the present invention.

도 1을 살펴보면, 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 시스템(1000)은 전자 기기(100)와 보안 서버(300)를 포함할 수 있다.Referring to FIG. 1, a lightweight crash report-based debugging system 1000 considering security according to an embodiment of the present invention may include an electronic device 100 and a security server 300.

전자 기기(100)는 복수의 프로그램 또는 복수의 소프트웨어를 실행시킬 수 있는 기기일 수 있다. 예를 들어, 전자 기기(100)는 휴대용 단말기, 스마트폰, 태블릿 PC(Tablet PC), 컴퓨터, 랩탑 컴퓨터 등등을 포함할 수 있다. 이에 한정되는 것은 아니며, 복수의 프로그램 또는 복수의 소프트웨어를 실행시킬 수 있는 모든 기기를 포함할 수 있다. The electronic device 100 may be a device capable of executing a plurality of programs or a plurality of software. For example, the electronic device 100 may include a portable terminal, a smart phone, a tablet PC, a computer, a laptop computer, and the like. The present invention is not limited thereto, and may include all devices capable of executing a plurality of programs or a plurality of software.

전자 기기(100)는 제어부(110)와 통신부(130)를 포함할 수 있다.The electronic device 100 may include a control unit 110 and a communication unit 130.

제어부(110)는 프로그램 또는 소프트웨어를 실행하는 도중 크래시가 발생하면 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동 생성할 수 있다. 크래시는 소프트웨어를 사용 중 코드 상의 결함으로 인해 발생하는 강제 종료와 같은 오류로 정의될 수 있다. 이러한 크래시는 사용성 측면에서 큰 문제를 야기할 수 있다. 크래시는 주로 처리되지 않은 예외(Unhandled Exception)와 같은 오류에 의해 발생할 수 있다. 제어부(110)는 메인 보드 또는 CPU(Central Processing Unit)라 칭할 수 있다. 오류는 버그 또는 에러라 칭할 수 있다.When a crash occurs while executing a program or software, the controller 110 may automatically generate a crash report while collecting information about the crash and essential information required for error tracking. Crash can be defined as an error, such as a forced termination caused by a defect in the code while using the software. Such a crash can cause a big problem in terms of usability. Crashes can be caused mainly by errors such as Unhandled Exceptions. The controller 110 may be referred to as a main board or a central processing unit (CPU). Errors can be called bugs or errors.

필수 정보는 전자 기기(100)의 실행 환경에서 개인 정보를 침해하지 않으면서 오류 추적에 유용한 프로세스, 예외, 메모리 정보일 수 있다. 크래시 리포트는 전자 기기(100)의 실행 환경에서 개인 정보를 침해하지 않으면서 오류 추적에 유용한 프로세스, 예외, 메모리 정보를 수집, 가공하여 보안성을 높인 리포트일 수 있다. 즉, 크래시 리포트는 필수정보를 이용하여 보안성을 개선한 고품질 경량 크래시 리포트일 수 있다.The essential information may be process, exception, and memory information useful for error tracking without invading personal information in the execution environment of the electronic device 100. The crash report may be a report that increases security by collecting and processing processes, exceptions, and memory information useful for error tracking without invading personal information in the execution environment of the electronic device 100. That is, the crash report may be a high-quality, lightweight crash report with improved security using essential information.

통신부(130)는 제어부(110)와 전기적으로 연결되어, 제어부(110)로부터 자동 생성된 크래시 리포트를 제공받아, 보안 서버(300)에 전송할 수 있다.The communication unit 130 may be electrically connected to the control unit 110 to receive a crash report generated automatically from the control unit 110 and transmit it to the security server 300.

보안 서버(300)는 전자 기기(100)와 데이터를 전송하거나 전송받을 수 있는 보안 통신부(330) 그리고 크래시 리포트를 분석하여 오류 정보 또는 오류 코드를 추출하고, 추출된 오류를 치료하여 프로그램을 업그레이드 또는 패치하도록 제어할 수 있는 보안 제어부(310)를 포함할 수 있다. 즉, 보안 서버(300)는 크래시를 추적하여 수정하는 디버깅 작업을 실행 또는 수행할 수 있다.The security server 300 analyzes the electronic device 100 and the secure communication unit 330 capable of transmitting or receiving data, and a crash report to extract error information or error codes, and treat the extracted errors to upgrade the program or It may include a security control unit 310 that can be controlled to patch. That is, the security server 300 may execute or perform a debugging task that tracks and corrects a crash.

보안 통신부(330)는 전자 기기(100)로부터 크래시 리포트를 전송받거나 전자 기기(100)에 업그레이드되거나 패치된 프로그램을 전송할 수 있다.The secure communication unit 330 may receive a crash report from the electronic device 100 or transmit an upgraded or patched program to the electronic device 100.

보안 제어부(310)는 크래시 리포트를 제공받아 크래시 리포트에 담긴 정보를 분석하여 오류 정보를 추출할 수 있다. 오류 정보는 오류 코드 또는 오류 데이터라 칭할 수 있다.The security control unit 310 may receive a crash report and analyze the information contained in the crash report to extract error information. Error information may be referred to as an error code or error data.

보안 제어부(310)는 추출된 오류 정보를 추적하여 오류의 위치를 특정할 수 있다. 보안 제어부(310)는 실행 환경에서 전달받은 크래시 리포트를 소스 코드와 연결하여 정밀한 단위의 오류 추적이 가능하기 때문에 보다 정확하게 오류를 감지 또는 체크할 수 있다.The security control unit 310 may track the extracted error information to specify the location of the error. The security control unit 310 can detect or check the error more accurately because the crash report received in the execution environment can be connected to the source code to accurately track the error.

보안 제어부(310)는 오류의 위치가 특정 또는 고정되면, 특정된 오류의 위치에 대한 정보 또는 데이터를 치료 또는 제거할 수 있다.When the location of the error is specified or fixed, the security control unit 310 may treat or remove information or data on the location of the specified error.

보안 제어부(310)는 특정된 오류의 위치에서 오류를 제거하거나 치료함으로써, 오류가 치료된 정보를 생성할 수 있다. 정보는 코드 또는 데이터라 칭할 수 있다.The security control unit 310 may generate or repair the error by removing or treating the error at the specified error location. Information can be referred to as code or data.

보안 제어부(310)는 오류가 발생한 코드를 치료하고, 오류가 제거된 코드를 기초로 프로그램을 재생성할 수 있다. 보안 제어부(310)는 재생성된 프로그램을 전자 기기에 전송할 수 있다. 즉, 보안 제어부(310)는 재생성된 프로그램을 재배포할 수 있다.The security control unit 310 may treat an error-generated code and regenerate a program based on the error-removed code. The security control unit 310 may transmit the regenerated program to the electronic device. That is, the security control unit 310 may redistribute the regenerated program.

전자 기기(100)는 보안 제어부(310)로부터 재생성된 프로그램을 전송받아, 기존의 프로그램을 업그레이드 또는 패치시킬 수 있다.The electronic device 100 may receive the regenerated program from the security control unit 310 and upgrade or patch an existing program.

도 2는 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 설명하기 위한 것이다.2 is for explaining a lightweight crash report based debugging method considering security according to an embodiment of the present invention.

도 2를 살펴보면, 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법은 실행단계, 생성단계, 분석단계 그리고 추적단계를 포함할 수 있다. 실행단계와 생성단계는 전자 기기의 실행 환경(Execution environment)에서 실행될 수 있고, 분석단계와 추적단계는 보안 서버의 개발 환경(Development environment)에서 실행될 수 있다.Referring to FIG. 2, a lightweight crash report-based debugging method considering security according to an embodiment of the present invention may include an execution step, a generation step, an analysis step, and a tracking step. The execution phase and the generation phase may be executed in the execution environment of the electronic device, and the analysis phase and the tracking phase may be executed in the development environment of the security server.

전자 기기는 실행가능한 소정의 프로그램 또는 소정의 소프트웨어를 디스플레이할 수 있다(S10).The electronic device may display an executable program or predetermined software (S10).

전자 기기는 제어부의 제어 하에 선택된 소정의 프로그램 또는 소정의 소프트웨어를 실행시킬 수 있다(S20). 예를 들어, 소정의 프로그램 또는 소정의 소프트웨어는 응용 프로그램, 응용소프트웨어, 애플리케이션(application), 어플, 앱 등을 포함할 수 있다.The electronic device may execute a predetermined program or predetermined software selected under the control of the controller (S20). For example, a predetermined program or predetermined software may include an application program, application software, an application, an application, an app, and the like.

전자 기기는 제어부의 제어 하에 프로그램 또는 소프트웨어가 실행하는 도중 크래시를 실시간으로 체크 또는 감지할 수 있다(S30).The electronic device may check or detect a crash in real time while the program or software is running under the control of the controller (S30).

전자 기기는 제어부의 제어 하에 프로그램 또는 소프트웨어가 실행하는 도중 크래시가 발생 또는 감지되면, 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동으로 생성할 수 있다(S40). 예를 들어, 필수 정보는 전자 기기의 실행 환경에서 개인 정보를 침해하지 않으면서 오류 추적에 유용한 프로세스, 예외, 메모리 정보일 수 있다. 크래시 리포트는 전자 기기의 실행 환경에서 오류 추적에 유용한 프로세스, 예외, 메모리 정보를 수집, 가공하기 때문에 경량화할 수 있다. 그리고 크래시 리포트는 전자 기기의 실행 환경에서 개인 정보를 제외시킬 수 있어 보안성을 개선시킬 수 있다.If a crash occurs or is detected while the program or software is running under the control of the control unit, the electronic device may automatically generate a crash report while collecting information about the crash and essential information required for error tracking (S40). For example, the essential information may be process, exception, and memory information useful for error tracking without invading personal information in the execution environment of the electronic device. The crash report can be made lighter by collecting and processing process, exception, and memory information useful for error tracking in the execution environment of the electronic device. In addition, the crash report can improve security by excluding personal information from the execution environment of the electronic device.

전자 기기는 제어부의 제어 하에 생성된 크래시 리포트를 통신부에 제공할 수 있다. 통신부는 생성된 크래시 리포트를 보안 서버에 전송할 수 있다(S50).The electronic device may provide a crash report generated under the control of the control unit to the communication unit. The communication unit may transmit the generated crash report to the security server (S50).

보안 서버는 전자 기기에서 크래시 리포트가 전송되면 크래시 리포트에 담긴 정보를 분석할 수 있다. 보안 서버는 보안 통신부를 통해 크래시 리포트를 전송받고, 보안 제어부의 제어 하에 크래시 리포트를 분석할 수 있다(S60). When the crash report is transmitted from the electronic device, the security server may analyze information contained in the crash report. The security server may receive the crash report through the secure communication unit and analyze the crash report under the control of the security control unit (S60).

보안 서버는 제어부의 제어 하에 분석된 크래시 리포트에 담긴 정보를 기반으로 프로그램 또는 소프트웨어의 오류 정보를 추출할 수 있다(S70).The security server may extract error information of the program or software based on the information contained in the crash report analyzed under the control of the control unit (S70).

보안 서버는 보안 제어부의 제어 하에 추출된 오류 정보를 추적하여 오류의 위치를 특정할 수 있다. 보안 서버는 보안 제어부의 제어 하에 크래시 리포트를 소스 코드와 연결하여 정밀한 단위의 오류 정보를 추적함으로써, 오류의 위치를 보다 정확하게 특정할 수 있다.The security server can track the error information extracted under the control of the security control unit to specify the location of the error. The security server can more accurately specify the location of the error by linking the crash report with the source code under the control of the security control unit to track the error information in a precise unit.

보안 서버는 보안 제어부의 제어 하에 오류의 위치가 특정되면, 오류의 위치를 고정시킬 수 있다(S80).If the location of the error is specified under the control of the security control unit, the security server may fix the location of the error (S80).

보안 제어부는 오류가 발생된 코드 또는 오류가 발생된 정보의 위치를 추적하고 특정한 후 고정시킴으로써, 프로그램 중 어느 부분 또는 어느 위치에 오류가 발생한 것인지 정확하게 인지할 수 있다. 이후 보안 서버는 보안 제어부의 제어 하에 고정된 오류의 위치에 대한 정보 또는 데이터를 치료할 수 있다.The security control unit can accurately recognize which part of the program or where the error has occurred by tracking the location of the error-generated code or the error-generated information and fixing it. Thereafter, the security server may treat information or data on the location of the fixed error under the control of the security control unit.

보안 제어부는 고정된 오류의 위치에서 오류를 제거하거나 치료함으로써, 오류가 치료된 정보를 생성할 수 있다. 정보는 코드 또는 데이터라 칭할 수 있다.The security control unit may generate information on which the error has been corrected by removing or treating the error at the location of the fixed error. Information can be referred to as code or data.

보안 제어부는 오류가 발생한 코드를 치료하고, 오류가 제거된 코드를 기초로 프로그램을 재생성할 수 있다. 보안 제어부는 재생성된 프로그램을 테스트할 수 있다(S90).The security control unit can repair the error-generated code and regenerate the program based on the error-removed code. The security control unit may test the regenerated program (S90).

보안 제어부는 재생성된 프로그램을 테스트한 후 오류가 계속해서 발생되면, 분석된 크래시 리포트에 담긴 정보를 기반으로 프로그램 또는 소프트웨어의 오류 정보를 추출하는 단계로 이동할 수 있다(S70).If the error continues to occur after testing the regenerated program, the security control unit may move to a step of extracting error information of the program or software based on the information contained in the analyzed crash report (S70).

보안 제어부는 오류가 치료될 때까지 분석된 크래시 리포트에 담긴 정보를 기반으로 프로그램 또는 소프트웨어의 오류 정보를 추출하고, 오류 정보를 추적하고, 오류의 위치를 특정하고 이후 특정된 오류의 위치를 고정하여 오류를 치료하거나 에러를 제거할 수 있다.The security control unit extracts the error information of the program or software based on the information contained in the crash report analyzed until the error is cleared, tracks the error information, locates the error, and then fixes the specified error location You can cure the error or eliminate it.

보안 제어부는 재생성된 프로그램을 테스트한 후 오류가 치료되면(S100), 실행시킬 수 있는 프로그램 또는 소프트웨어라고 판단하고 이를 전자 기기에 전송할 수 있다(S110). 예를 들어, 보안 제어부는 기존의 프로그램보다 높은 버전의 프로그램을 전자 기기에 전송할 수 있다. 이에 전자 기기는 보안 제어부로부터 재생성된 프로그램을 전송받아, 기존의 프로그램을 업그레이드 또는 패치시킴으로써, 오류가 제거된 높은 버전의 프로그램을 실행시킬 수 있다.When the error is treated after testing the regenerated program (S100), the security control unit may determine that it is a program or software that can be executed and transmit it to the electronic device (S110). For example, the security control unit may transmit a higher version of the program to the electronic device than the existing program. Accordingly, the electronic device may receive the regenerated program from the security control unit, and upgrade or patch an existing program to execute a high version program in which errors are removed.

도 3은 본 발명의 일실시 예에 따라 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 자세하게 설명하기 위한 것이다.3 is a detailed description of a lightweight crash report based debugging method considering security according to an embodiment of the present invention.

도 3을 살펴보면, 전자 기기는 실행 환경에서 배포된 소프트웨어(Executable file)를 실행할 수 있다(S110). 실행 환경에서 실행되는 소프트웨어는 비지니스 로직(Business logic, 131)과 오류 추적 라이브러리(132)를 포함할 수 있다. 비지니스 로직(131)은 구현한 소스 코드라 칭할 수 있다.Referring to FIG. 3, the electronic device may execute software (Executable file) distributed in an execution environment (S110). The software executed in the execution environment may include business logic (131) and error tracking library (132). The business logic 131 may be referred to as implemented source code.

실행 환경에서 배포된 소프트웨어를 실행하는 도중 크래시가 발생하면 크래시 리포트를 자동으로 생성하는 단계를 수행할 수 있다(S130). 크래시 리포트를 자동으로 생성하는 단계(S130)는 실행되는 소프트웨어에서 덤프 파일을 생성(133)하고, 오류 추적용 필수 정보를 수집(134)하고, 크래시 리포트를 작성(135)할 수 있다.If a crash occurs while executing the software distributed in the execution environment, a step of automatically generating a crash report may be performed (S130). In the step of generating the crash report automatically (S130), a dump file is generated (133) in the software to be executed, essential information for error tracking is collected (134), and a crash report is created (135).

크래시 리포트는 배포된 환경 정보, 라인 수준의 오류 추적에 요구되는 최소한의 정보인 실행 파일 고유 번호, 상대적 오류 주소 정보 그리고 스택 정보를 덤프 파일 또는 덤프 데이터로 가공함으로써, 개인 정보가 포함되지 않아 데이터의 크기를 현저하게 줄일 수 있다. 이에 전자 기기는 경량의 크래시 리포트를 생성하고, 생성된 경량의 크래시 리포트를 보안 서버에 전송 또는 전달할 수 있다.The crash report processes the distributed information, the minimum information required for line-level error tracking, the executable unique number, the relative error address information, and the stack information into the dump file or dump data, so that the personal information is not included. The size can be significantly reduced. Accordingly, the electronic device may generate a lightweight crash report and transmit or transmit the generated lightweight crash report to the security server.

표 1은 기존 크래시 리포트의 수집 정보와 제안한 크래시 리포트의 수집 정보를 비교한 것이다.Table 1 compares the collected information of the existing crash report with the proposed crash report.

[표 1][Table 1]

Figure pat00001
Figure pat00001

표 1에 설명된 바와 같이, 본 발명에서 제안하는 크래시 리포트는 덤프 파일로부터 크게 4가지 종류의 정보를 수집할 수 있다. 예를 들어, 각각 시스템 정보, 모듈 정보, 스레드 정보, 예외 정보일 수 있다.As described in Table 1, the crash report proposed in the present invention can collect four types of information from a dump file. For example, it may be system information, module information, thread information, and exception information, respectively.

시스템 정보에서는 개발자가 오류를 재현하기 위해 기본적인 실행 환경의 환경 정보를 이해할 수 있도록 1) 운영체제 종류와 2) 운영체제의 버전, 3) 프로세서의 레벨, 그리고 4) 프로세서의 아키텍처 정보를 수집할 수 있다. In the system information, it is possible to collect 1) the operating system type, 2) the version of the operating system, 3) the level of the processor, and 4) the architecture information of the processor so that the developer can understand the environment information of the basic execution environment in order to reproduce the error.

모듈 정보에서는 크래시 즉, 예외 상황이 발생한 모듈의 정보를 수집할 수 있다. 예를 들어, 모듈 정보들은 실행 파일이나 동적 라이브러리와 같은 1) 모듈의 이름, 2) 모듈이 실제 메모리에 로드된 물리 주소 및 크기 정보, 그리고 해당 모듈의 고유 번호를 의미할 수 있으며, 개발 환경에서 일치하는 모듈을 찾는데 사용되는 3) 타임 스탬프일 수 있다. 타임 스탬프는 프로그램의 버전이라 칭할 수 있다.In module information, a crash, that is, information on a module in which an exception has occurred can be collected. For example, module information can mean 1) the name of the module, such as an executable or dynamic library, 2) the physical address and size information of the module loaded into physical memory, and a unique number of the module. It can be a 3) timestamp used to find a matching module. The time stamp can be referred to as the version of the program.

스레드 정보에서는 예외 상황이 발생한 지점까지의 실행 이력을 담아 오류 재현에 도움을 주는 정보를 수집할 수 있다. 예를 들어, 스레드 정보들은 1) 예외 상황이 발생한 스레드 ID, 2) 백트레이스 방식의 콜 스택 정보일 수 있다.In the thread information, it is possible to collect information that helps to reproduce the error, including the execution history up to the point where the exception occurred. For example, the thread information may be 1) a thread ID in which an exception occurs, and 2) call trace information of a backtrace method.

예외 정보는 실질적으로 개발에서 어떤 종류의 예외 상황이 발생했는지를 구체적으로 알려 줄 수 있는 정보를 수집할 수 있다. 예를 들어, 예외 정보들은 1) 오류 발생 스레드 ID, 2) 오류가 발생한 물리 메모리 주소, 그리고 3) Null pointer dereference, Divide by zero와 같은 오류의 종류 정보를 수집할 수 있다.Exception information may collect information that can specifically tell what kind of exception occurred in development. For example, the exception information may collect 1) the thread ID of the error, 2) the physical memory address where the error occurred, and 3) Null pointer dereference, Divide by zero.

또한, 오류 추적에 요구되는 필수 정보는 상대적 가상 주소와 타임 스탬프일 수 있다. 상대적 가상 주소와 타임 스탬프를 이용하여 라인 단위의 오류를 추적할 수 있다. 이에 대한 자세한 설명은 후술하기로 한다.Also, essential information required for error tracking may be a relative virtual address and a time stamp. Relative virtual addresses and time stamps can be used to track line-by-line errors. Detailed description thereof will be described later.

보안 서버는 개발 환경에서 수행되는 크래시 리포트를 분석하는 단계를 수행할 수 있다(S150).The security server may perform a step of analyzing a crash report performed in the development environment (S150).

크래시 리포트를 분석하는 단계는 전달된 또는 전송된 크래시 리포트의 내용 분석하고, 분석 결과에 기반한 배포된 소프트웨어와 일치하는 프로젝트의 경로를 특정하고, 프로젝트를 컴파일 시 생성한 프로그램을 데이터베이스 파일로 특정 및 분석을 수행할 수 있다. 즉, 크래시 리포트를 분석하는 단계는 개발 환경에서 전달받은 크래시 리포트에 담긴 정보와 배포된 소프트웨어의 프로젝트 경로에 위치한 실행 파일 또는 동적 라이브러리 파일을 분석함으로써, 오류 정보를 추출할 수 있다.The steps to analyze the crash report analyze the contents of the crash report delivered or transmitted, specify the path of the project that matches the distributed software based on the analysis results, and specify and analyze the program generated when compiling the project as a database file You can do That is, in the step of analyzing the crash report, error information may be extracted by analyzing the information contained in the crash report received from the development environment and the executable file or dynamic library file located in the project path of the distributed software.

크래시 리포트를 분석하는 단계(S150)는 제1 분석 단계와 제2 분석 단계로 구분될 수 있다. 제1 분석 단계는 타임 스탬프를 기반으로 동일 모듈을 탐색하여 분석하는 단계일 수 있다(331,332,334). 제2 분석 단계는 프로그램의 데이터베이스를 기반으로 RVA(Relative Virtual Address-상대적 가상 주소)-라인을 맵핑하여 정보를 분석하는 단계일 수 있다(331,333,335). RVA(Relative Virtual Address)는 프로그램의 이미지 파일에서 메모리 항목의 주소일 수 있다. 항목의 RVA는 디스크상의 파일(파일 포인터)내의 위치와 대부분 다를 수 있다.The step of analyzing the crash report (S150) may be divided into a first analysis step and a second analysis step. The first analysis step may be a step of searching and analyzing the same module based on the time stamp (331,332,334). The second analysis step may be a step of analyzing information by mapping a RVA (Relative Virtual Address)-line based on the database of the program (331,333,335). RVA (Relative Virtual Address) may be an address of a memory item in an image file of a program. The RVA of an item can be mostly different from the location in the file (file pointer) on disk.

제1 분석 단계는 크래시 리포트로부터 얻을 수 있는 주소 차 정보를 사용하기 위해서 타임 스탬프를 활용해 동일 모듈을 탐색할 수 있다(331,332,334). The first analysis step may use the time stamp to search for the same module to use the address difference information obtained from the crash report (331,332,334).

제1 분석 단계는 크래시 리포트에 포함된 모듈 이름과 타임 스탬프를 추출할 수 있다. 제1 분석 단계는 모듈 이름과 타임 스탬프의 정보를 이용해 사전에 배포된 소프트웨어들의 프로젝트 경로들을 탐사 또는 검색하면서 오류 모듈과 같은 확장자를 가지는 파일들의 헤더를 분석할 수 있다. 제1 분석 단계는 분석된 오류 모듈과 같은 확장자를 가지는 파일들의 헤더를 통해 동일한 타임 스탬프를 가지는 실행 파일 혹은 동적 라이브러리 파일의 경로를 획득할 수 있다(331,332,334).In the first analysis step, the module name and time stamp included in the crash report can be extracted. The first analysis step may analyze headers of files having the same extension as the error module while exploring or searching project paths of previously distributed software using information of the module name and time stamp. In the first analysis step, a path of an executable file or a dynamic library file having the same time stamp may be obtained through headers of files having the same extension as the analyzed error module (331,332,334).

제2 분석 단계는 주소차 정보를 활용하기 위해서 프로그램의 데이터베이스를 분석할 수 있다(331,333,335). 프로그램의 데이터베이스 파일은 배포되는 모듈을 컴파일할 때 디버깅 모드에서의 옵션 설정을 통해 배포되는 모듈과 같은 경로에 생성할 수 있다(331,333,335). 예를 들어, 프로그램의 데이터베이스 파일은 PDB 파일로 클래스, 메서드 및 소스 코드를 RVA(Relative Virtual Address-상대적 가상 주소)로 표현된 파일일 수 있다.The second analysis step may analyze the database of the program in order to utilize the address difference information (331,333,335). When compiling the module to be distributed, the database file of the program can be created in the same path as the module to be distributed through setting options in debugging mode (331,333,335). For example, the database file of the program may be a PDB file, a class, method, and source code represented by RVA (Relative Virtual Address).

PDB 파일은 개발시 디버깅을 지원하기 위해 생성될 수 있고, 해당 모듈을 동작시키기 위해 필요한 리소스들의 경로 정보, 소스 코드의 라인 별 RVA 맵핑 정보, 심볼 테이블과 같은 정보를 포함할 수 있다. The PDB file may be generated to support debugging during development, and may include information such as path information of resources necessary to operate the corresponding module, RVA mapping information for each line of source code, and symbol table.

제2 분석 단계는 해당 파일의 라인 별 RVA 맵핑 정보를 분석하여 획득할 수 있다(331,333,335).The second analysis step may be obtained by analyzing RVA mapping information for each line of the corresponding file (331,333,335).

크래시 리포트를 분석하는 단계는 제1 분석 단계를 통해 획득한 크래시 리포트에서 추출한 주소차 정보(331,332,334)와 제2 분석 단계를 통해 획득한 소스 코드 라인 별 RVA 맵핑 정보(331,333,335)를 오류 추적 단계에 전달 또는 전송할 수 있다.The step of analyzing the crash report delivers the address difference information (331,332,334) extracted from the crash report obtained through the first analysis step and the RVA mapping information (331,333,335) of each source code line obtained through the second analysis step to the error tracking step. Or you can transmit.

마지막으로 오류를 추적하는 단계를 수행할 수 있다(S170).Finally, an error tracking step may be performed (S170).

오류를 추적하는 단계(S170)에서는 분석 단계에서 전송되는 크래시 리포트에서 추출한 주소차 정보와 소스 코드 라인 별 RVA 맵핑 정보를 기반으로 크래시 발생 지점을 도출할 수 있다(336,337,338,339). 라인 단위별 오류를 추적하는 단계(S170)에서는 크래시 리포트를 분석하는 단계에서 전달받은 두 정보인 소스 코드 라인별 RVA 맵핑 정보와 오류 모듈에서의 주소 차 정보를 통해서 라인 단위의 오류 위치를 특정할 수 있다(336,337,338,339). 이에 대한 자세한 설명은 후술하기로 한다.In the step of tracking the error (S170), a crash occurrence point can be derived based on the address difference information extracted from the crash report transmitted in the analysis step and RVA mapping information for each source code line (336,337,338,339). In the step of tracking errors per line (S170), the error location of each line can be specified through RVA mapping information per source code line and address difference information in the error module, which are two pieces of information received in the step of analyzing the crash report. Yes (336,337,338,339). Detailed description thereof will be described later.

상술한 바와 같이, 추적 단계(S170)는 두 가지 입력 값인 크래시 리포트에 포함된 크래시 지점의 인터벌 주소와 프로그램 데이터 파일의 LINES 섹션에 추출한 소스 코드-RVA 맵핑 정보를 사용하여 소스 코드에서의 크래시 발생 지점을 도출할 수 있다(336,337,338,339).As described above, the tracking step (S170) uses two input values, the crash address included in the crash report, and the source code-RVA mapping information extracted in the LINES section of the program data file. Can be derived (336,337,338,339).

도 4는 본 발명의 일실시 예에 따른 환경별 상대적 가상 주소에 따른 크래시 지점을 설명하기 위한 것이다.4 is for explaining a crash point according to a relative virtual address for each environment according to an embodiment of the present invention.

도 4를 살펴보면, 실질적으로 동일한 exe파일이지만 개발 환경(Development environment)의 주소 값과 실행 환경(Execution environment)의 주소 값은 다를 수 있다. 예를 들어, 개발 환경의 주소의 시작 값은 0x21963126일 수 있고, 실행 환경의 주소 시작 값은 0x00000000일 수 있다. 여기서 0x~~~로 시작하는 숫자들은 상대적 가상 주소(RVA) 값일 수 있다.Referring to FIG. 4, although the exe file is substantially the same, the address value of the development environment and the address value of the execution environment may be different. For example, the starting value of the address of the development environment may be 0x21963126, and the starting value of the address of the execution environment may be 0x00000000. Here, numbers starting with 0x~~~ may be relative virtual address (RVA) values.

개발 환경의 exe파일과 실행 환경의 exe파일은 헤더 파일을 포함할 수 있다. 예를 들어 개발 환경의 exe파일의 헤더 파일은 0x21963126~0x22363126의 주소 값을 가질 수 있다. 그리고 실행 환경의 exe파일의 헤더 파일은 0x00000000~0x40000000의 주소 값을 가질 수 있다.The exe file of the development environment and the exe file of the execution environment may include a header file. For example, the header file of the exe file of the development environment may have an address value of 0x21963126 to 0x22363126. And the header file of the exe file of the execution environment may have an address value of 0x00000000 to 0x40000000.

헤더 파일 내용은 파일 헤더(file header), 옵셔널 헤더(optional header), 섹션 헤더(section header)로 나눌 수 있다. 파일 헤더(file header), 옵셔널 헤더(optional header), 섹션 헤더(section header) 중 적어도 하나의 헤더는 타임 스탬프 정보를 포함할 수 있다. The header file contents can be divided into a file header, an optional header, and a section header. At least one of a file header, an optional header, and a section header may include time stamp information.

타임 스탬프는 소프트웨어의 빌드 시점으로 정의될 수 있다. 타임 스탬프는 버전이라 칭할 수 있다.The time stamp can be defined at the time of the software build. The time stamp can be called a version.

전자 기기의 제어부는 오류가 발생한 실행 환경(Execution environment)의 타임 스탬프 정보를 추출하여 크래시 리포트에 출력할 수 있다. 보안 제어부는 전자 기기를 통해 전송되는 크래시 리포트의 타임 스탬프를 확인할 수 있다. The control unit of the electronic device may extract timestamp information of an execution environment in which an error has occurred and output it to the crash report. The security control unit may check the time stamp of the crash report transmitted through the electronic device.

보안 제어부는 실행 환경에서 실행되는 프로그램 또는 소프트웨어에 대한 적어도 하나 이상의 타임 스탬프를 저장하거나 구비할 수 있다. 예를 들어 보안 제어부는 실행 환경에서 실행되는 프로그램 또는 소프트웨어에 대한 여러 버전을 저장하거나 구비할 수 있다. The security control unit may store or have at least one time stamp for a program or software executed in an execution environment. For example, the security control unit may store or have various versions of programs or software executed in an execution environment.

보안 제어부는 오류가 발생한 소프트웨어의 타임 스탬프(0x5bbac917)와 저장된 적어도 하나 이상의 타임 스탬프를 서로 매칭시킴으로써, 오류가 발생한 소프트웨어의 타임 스탬프(0x5bbac917)와 동일한 소프트웨어의 타임 스탬프(0x5bbac917)를 서칭할 수 있다. The security control unit may search the time stamp (0x5bbac917) of the same software as the time stamp (0x5bbac917) of the software in which the error occurred by matching the time stamp (0x5bbac917) of the software in error with at least one of the stored time stamps.

예를 들어, 오류가 발생한 소프트웨어의 버전이 V2.3이라고 가정할 경우, 보안 제어부는 소프트웨어의 버전 V2.0 내지 소프트웨어의 버전 V2.9를 서로 매칭시켜 오류가 발생한 소프트웨어의 버전 V2.3과 동일한 소프트웨어의 버전 V2.3를 검색할 수 있다. For example, assuming that the version of the software with the error is V2.3, the security control unit matches the version V2.0 of the software to the version V2.9 of the software, which is the same as the version V2.3 of the software with the error. You can search for version V2.3 of the software.

개발 환경의 exe파일과 실행 환경의 exe파일은 상대적 가상 주소를 포함할 수 있다.The exe file of the development environment and the exe file of the execution environment may include a relative virtual address.

개발 환경의 exe파일의 상대적 가상 주소는 0x22363126~0xFFFFFFFF의 주소 값을 가질 수 있다. 그리고 실행 환경의 exe파일의 상대적 가상 주소는 0x40000000~0xFFFFFFFF의 주소 값을 가질 수 있다. 상대적 가상 주소는 소스 코드에 대한 상대적 가상 주소 정보일 수 있다.The relative virtual address of the exe file of the development environment may have an address value of 0x22363126 to 0xFFFFFFFF. In addition, the relative virtual address of the exe file of the execution environment may have an address value of 0x40000000 to 0xFFFFFFFF. The relative virtual address may be relative virtual address information for the source code.

개발 환경의 exe파일에서 0x22363126의 주소 값과 실행 환경의 exe파일에서 0x40000000는 소스 코드 가상 주소의 시작 주소 값일 수 있다. 그리고 개발 환경의 exe파일에서 0x7FFFFFFF의 주소 값과 실행 환경의 exe파일에서 0x7FFFFFFF는 소스 코드 가상 주소의 끝 주소 값일 수 있다.The address value of 0x22363126 in the exe file of the development environment and 0x40000000 in the exe file of the execution environment may be the starting address value of the source code virtual address. Also, the address value of 0x7FFFFFFF in the exe file of the development environment and 0x7FFFFFFF in the exe file of the execution environment may be the end address value of the virtual address of the source code.

개발 환경의 주소 값과 실행 환경의 주소 값은 다를 수 있으나 오류가 발생한 주소와 시작 주소를 뺀 값인 인터벌 주소 값은 변하지 않을 수 있다. 이를 이용하여 보안 제어부는 오류가 발생한 소스 코드의 라인 단위까지 찾을 수 있다.The address value of the development environment and the address value of the execution environment may be different, but the interval address value, which is the value minus the error address and the start address, may not change. Using this, the security control unit can find even the line unit of the source code where the error occurred.

예를 들어, 실행 환경에서 오류가 발생한 주소 값이 0x40080000라 가정할 때, 보안 제어부는 실행 환경에서 오류가 발생한 주소 값에서 실행 환경에서 소스 코드 가상 주소의 시작 주소 값을 뺀 인터벌(Interval) 주소 값을 산출할 수 있다.For example, assuming that the address value of the error in the execution environment is 0x40080000, the security control unit intervals the value of the address in the execution environment minus the starting address value of the source code virtual address in the execution environment. Can be calculated.

즉, 보안 제어부는 0x40080000(오류가 발생한 주소 값)에서 0x40000000(소스 코드 가상 주소의 시작 주소 값)를 뺀 0x00080000(인터벌 주소 값)을 산출할 수 있다.That is, the security control unit may calculate 0x00080000 (interval address value) by subtracting 0x40000000 (start address value of the source code virtual address) from 0x40080000 (the address value where the error occurred).

이에 보안 제어부는 개발 환경에서 소스 코드 가상 주소의 시작 주소 값에 인터벌 주소 값을 합하여 개발 환경에서 오류가 발생한 주소 값을 산출할 수 있다.Accordingly, the security control unit may calculate an address value in which an error occurs in the development environment by adding the interval address value to the start address value of the source code virtual address in the development environment.

즉, 보안 제어부는 0x22363126(소스 코드 가상 주소의 시작 주소 값)에서 0x00080000(인터벌 주소 값)을 더한 0x22443126(오류가 발생한 주소 값)을 산출할 수 있다.That is, the security control unit may calculate 0x22443126 (the address value in which an error occurs) by adding 0x00080000 (interval address value) to 0x22363126 (start address value of the source code virtual address).

다시 말해. 각 환경에서 오류가 발생한 주소 값(exception address)와 가상 주소의 시작 주소 값(start address)의 차를 구하면 인터벌 주소 값(0x00080000)를 구할 수 있다. 이에 보안 제어부는 어느 환경이든 시작 주소 값부터 0x00080000만큼 이동하면 문제가 되는 소스 코드 주소 값이 산출할 수 있다.In other words. In each environment, the interval address value (0x00080000) can be obtained by obtaining the difference between the error address and the start address of the virtual address. Accordingly, in any environment, if the environment is moved from the starting address value by 0x00080000, the problematic source code address value can be calculated.

도 5는 본 발명의 일실시 예에 따라 상대 가상주소와 소스 코드 라인 맵핑 정보를 설명하기 위한 것이다. 5 is for describing relative virtual address and source code line mapping information according to an embodiment of the present invention.

도 2 내지 도 4에서 상술한 바와 라인 단위 오류 추적 단계에서는 크래시 리포트 분석단계에서 전달받은 소스 코드 라인별 RVA 맵핑 정보와 오류 모듈에서의 주소차 정보를 통해서 라인 단위의 오류 위치를 특정할 수 있다.2 to 4, in the line-by-line error tracking step, it is possible to specify an error location in line units through RVA mapping information for each source code line received in the crash report analysis step and address difference information in the error module.

같은 모듈일 경우(도 4 참조) 동일한 주소 차를 이용할 경우, 오류 지점이 정확하게 일치하기 때문에 실행 환경과 무관하게 오류 지점을 특정할 수 있다.In the case of the same module (refer to FIG. 4), when the same address difference is used, since the error points are exactly matched, the error points can be specified regardless of the execution environment.

이와 같은 원리를 활용하여 보안 제어부는 필요 최소한의 데이터만으로 높은 정확도의 오류 추적을 할 수 있다. 이를 달성하기 위해서는 주소 차 또는 주소 차의 값이 지시하는 지점을 추적할 필요가 있다.By using this principle, the security control unit can track errors with high accuracy with only the minimum data required. To achieve this, it is necessary to track the address difference or the point indicated by the value of the address difference.

도 2 내지 도 4에서 상술한 프로그램 데이터베이스 분석을 통해 획득한 라인별 RVA 맵핑 정보는 함수의 목록으로 구성될 수 있다.The RVA mapping information for each line obtained through the above-described program database analysis in FIGS. 2 to 4 may be configured as a list of functions.

함수의 목록 내부에는 도 5에 도시된 바와 같은 형태의 RVA-라인 맵핑 정보가 기록될 수 있다.RVA-line mapping information in the form as shown in FIG. 5 may be recorded in the function list.

line 37은 오류가 발생한 소스 코드의 라인 위치를 나타낼 수 있다. [00023230][0001:0002230]은 RVA(Relative Virtual Address)를 나타낼 수 있다. 그리고 len = 0x3F는 RVA의 길이를 나타낼 수 있다. [C:\..\main.cpp]: 오류가 발생한 파일 위치를 나타낼 수 있다. (MD5: 7A..9F): 해쉬 값을 나타낼 수 있다.line 37 can indicate the line position of the source code where the error occurred. [00023230] [0001:0002230] may indicate a relative virtual address (RVA). And len = 0x3F may indicate the length of the RVA. [C:\..\main.cpp]: Can indicate the location of the file where the error occurred. (MD5: 7A..9F): A hash value can be represented.

같은 모듈이 아닌 다른 모듈일 경우, 오류가 난 지점의 상대 가상주소와 맵핑된 상대 가상주소는 일치하지 않을 수 있다. 즉, 다른 모듈일 경우 주소 차의 값이 다를 수 있다. 이에 보안 제어부는 라인에 맵핑된 상대 가상주소와 상술한 RVA의 길이의 정보를 활용하여 오류의 위치를 추적할 수 있다.In the case of a module other than the same module, the relative virtual address mapped to the error point may not match the relative virtual address. That is, in case of other modules, the value of the address difference may be different. Accordingly, the security control unit may track the location of the error by using the information of the relative virtual address mapped to the line and the length of the RVA described above.

최종적으로 주소 차의 값이 포함되는 범위의 라인을 찾으면 크래시 리포트에 포함된 정보들과 함께 오류 라인 정보를 도출할 수 있다.Finally, if a line in the range containing the address difference value is found, error line information can be derived together with information included in the crash report.

도 6은 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 시스템을 이용하여 오류 추적 분석 시간 및 수집 데이터 항목 비교한 것이다.6 is a comparison of error tracking analysis time and collected data items using a lightweight crash report-based debugging system considering security according to an embodiment of the present invention.

도 6에 도시된 바와 같이, (A) Error tracing time은 종래의 오류 추적 도구인 WinDbg가 17.545(S)이고, 본 발명은 3.821(S)이다. (B) Collected # of dump data는 종래의 오류 추적 도구인 WinDbg가 82 개이고, 본 발명은 23 개이다.As shown in FIG. 6, (A) Error tracing time is WinDbg, which is a conventional error tracking tool, is 17.545(S), and the present invention is 3.821(S). (B) The collected # of dump data is 82 WinDbg, which is a conventional error tracking tool, and the present invention is 23.

본 발명은 Native Win32 API 기반의 C++ 오픈 소스 프로젝트인 Process hacker를 대상으로 실험을 진행하였다. 실험 환경은 Intel Core i5-7600, 8GB RAM, Windows 10 32/64bit, Windows Server 2003/2008 32/64bit, Microsoft Visual Studio 2017(Windows 10 32/64bit), Microsoft Visual Studio 2010(Windows Server 2003/2008 32/64bit), Python 3.6.4이다. The present invention has been experimented with Process hacker, a C++ open source project based on Native Win32 API. Experiment environment is Intel Core i5-7600, 8GB RAM, Windows 10 32/64bit, Windows Server 2003/2008 32/64bit, Microsoft Visual Studio 2017 (Windows 10 32/64bit), Microsoft Visual Studio 2010 (Windows Server 2003/2008 32 /64bit), Python 3.6.4.

본 발명은 정상적으로 동작하는 오픈 소스에 크래시 발생을 유도하기 위해 자주 발생하는 오류 중 하나의 예로 Divide by zero 에러를 주입하였다. 예를 들어 Divide by zero 에러는 0으로 나눌 때, 발생하는 에러일 수 있다. Divide by zero 에러는 int b = 0; int a = 100 / b; cout << a << endl;로 표현될 수 있다.The present invention injects a Divide by zero error as one of the frequently occurring errors in order to induce a crash in an open source that operates normally. For example, the Divide by zero error may be an error that occurs when dividing by 0. Divide by zero error is int b = 0; int a = 100 / b; It can be expressed as cout << a << endl;.

종래의 오류 추적 도구인 WinDbg는 표 1에서와 같이 실행 환경의 시스템 환경 정보를 포함한 약 82개의 메모리 덤프 분석 결과를 받아 오류 추적을 할 수 있다. 하지만 개발자가 분석 결과를 한눈에 보기 힘들고, 오류 추적을 위한 분석에 많은 비용을 발생시킨다. As shown in Table 1, WinDbg, a conventional error tracking tool, can receive and trace errors by analyzing about 82 memory dumps including system environment information of an execution environment. However, it is difficult for developers to see the results of analysis at a glance, and it is expensive to analyze errors.

반면 본 발명은 약 72% 감소한 23개의 분석 결과만 확인하여도 종래의 오류 추적 도구인 WinDbg와 동일한 오류 추적 정확도를 보일 수 있다. On the other hand, the present invention can show the same error tracking accuracy as WinDbg, which is a conventional error tracking tool, by checking only 23 analysis results reduced by about 72%.

따라서, 본 발명은 크래시 리포트의 크기도 경량화될 수 있고, 오류 추적에 필요한 핵심 내용만 읽기 때문에 가독성도 향상될 수 있다.Therefore, according to the present invention, the size of the crash report can be reduced, and readability can be improved because only the core content necessary for error tracking is read.

본 발명은 오류 라인 위치를 보여주는 총 분석 시간이 종래의 오류 추적 도구인 WinDbg 대비 약 78% 감소할 수 있다. 이와 같이, 소요되는 시간이 더 감소한 이유는 다음과 같다. The present invention can reduce the total analysis time showing the error line position by about 78% compared to WinDbg, which is a conventional error tracking tool. As described above, the reason for the reduced time required is as follows.

첫 번째는 종래의 WinDbg는 입력 값의 형태로 덤프 파일 자체가 입력 값이 되어 분석해야 할 데이터가 방대할 수 있다. 하지만 본 발명에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법은 경량화된 크래시 리포트를 활용하기 때문에 분석해야 할 데이터의 크기가 작아 분석 소요 시간을 감소할 수 있다.First, in the conventional WinDbg, the dump file itself is an input value in the form of an input value, and data to be analyzed can be vast. However, since the lightweight crash report-based debugging method considering the security according to the present invention utilizes a lightweight crash report, the size of the data to be analyzed is small, so the analysis time can be reduced.

두 번째는 종래의 WinDbg에서 라인 위치까지 추적하기 위해 프로그램 데이터베이스 파일을 특정하는 과정이 불가능하거나 오래 걸렸다면 본 발명에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법은 추적 경로를 입력 값으로 사전에 설정하기 때문에 상대적으로 프로그램 데이터베이스 파일을 특정하는 시간을 감소할 수 있다.Second, if the process of specifying the program database file to track the line position in the conventional WinDbg is impossible or took a long time, the lightweight crash report-based debugging method considering the security according to the present invention sets the trace path in advance as an input value Therefore, the time for specifying the program database file can be relatively reduced.

본 발명의 실시 예 및 본 명세서에 첨부된 도면은 전술한 기술에 포함되는 기술적 사상의 일부를 명확하게 나타내고 있는 것에 불과하며, 전술한 기술의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시 예는 모두 전술한 기술의 권리범위에 포함되는 것이 자명하다고 할 것이다.Embodiments of the present invention and the accompanying drawings are only a part of the technical spirit included in the above-described technology clearly, those skilled in the art within the scope of the technical spirit included in the specification and drawings of the above-described technology It will be apparent that modifications and specific embodiments that can be easily inferred are all included in the scope of the above-described technology.

100 : 전자 기기
110 : 통신부
130 : 제어부
300 : 보안 서버
310 : 보안 통신부
330 : 보안 제어부
100: electronic device
110: communication unit
130: control unit
300: security server
310: secure communication unit
330: security control

Claims (13)

보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법에 있어서,
전자 기기에서 프로그램을 실행하는 실행 단계;
상기 프로그램이 실행하는 도중 크래시가 발생하면, 상기 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동 생성하는 생성 단계;
생성된 상기 크래시 리포트를 제공받아 상기 크래시 리포트에 담긴 상기 정보를 분석하여 오류 정보를 추출하는 분석 단계;
추출된 상기 오류 정보를 추적하여 오류의 위치를 특정하는 추적 단계;
를 포함하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
In the debugging method based on the lightweight crash report considering security,
An execution step of executing a program in the electronic device;
A generation step of automatically generating a crash report while collecting information on the crash and essential information required for error tracking when a crash occurs while the program is executing;
An analysis step of receiving the generated crash report and analyzing the information contained in the crash report to extract error information;
A tracking step of tracking the extracted error information and specifying the location of the error;
Lightweight crash report-based debugging method considering security including a.
제1 항에 있어서,
상기 생성 단계는
상기 프로그램에서 덤프 파일을 생성하고, 오류를 추적할 수 있는 상기 필수 정보를 수집하고, 상기 크래시 리포트를 자동으로 생성하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
According to claim 1,
The generating step
A lightweight crash report-based debugging method considering security, characterized in that the program generates a dump file, collects the essential information to track errors, and automatically generates the crash report.
제2 항에 있어서,
상기 크래시 리포트는
상기 프로그램을 실행할 수 있는 실행 파일의 고유 번호, 상대적 오류 주소 정보, 그리고 스택 정보를 상기 덤프 파일로 가공하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
According to claim 2,
The crash report above
A lightweight crash report-based debugging method considering security, characterized in that a unique number of an executable file capable of executing the program, relative error address information, and stack information are processed into the dump file.
제2 항에 있어서,
상기 크래시 리포트는 상기 덤프 파일로부터 시스템 정보, 모듈 정보, 스레드 정보, 예외 정보를 수집하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
According to claim 2,
The crash report is a lightweight crash report-based debugging method considering security, characterized in that it collects system information, module information, thread information, and exception information from the dump file.
제4 항에 있어서,
상기 시스템 정보는
운영체제 종류, 운영체제의 버전, 프로세서의 레벨, 그리고 프로세서의 아키텍처 정보를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
According to claim 4,
The system information is
A lightweight crash report-based debugging method considering security, characterized by including the operating system type, operating system version, processor level, and processor architecture information.
제4 항에 있어서,
상기 모듈 정보는
모듈의 이름, 모듈이 실제 메모리에 로드된 물리 주소 및 크기 정보, 그리고 해당 모듈의 고유 번호를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
According to claim 4,
The module information
A lightweight crash report-based debugging method considering security, characterized in that it includes the name of the module, the physical address and size information loaded into the physical memory, and the unique number of the module.
제4 항에 있어서,
상기 스레드 정보는
예외 상황이 발생한 스레드 ID와 백트레이스 방식의 콜 스택 정보를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
According to claim 4,
The thread information
A lightweight crash report-based debugging method considering security, characterized in that it includes the thread ID in which the exception occurred and the call stack information of the backtrace method.
제4 항에 있어서,
상기 예외 정보는
오류 발생 스레드 ID, 오류가 발생한 물리 메모리 주소, 그리고 오류의 정류 정보를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
According to claim 4,
The exception information
A lightweight crash report-based debugging method considering security, characterized in that it contains an error-occurring thread ID, an error-occurring physical memory address, and error rectification information.
제2 항에 있어서,
상기 필수 정보는 상대적 가상 주소와 타임 스탬프를 구비하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
According to claim 2,
The essential information is a lightweight crash report based debugging method considering security, characterized in that it has a relative virtual address and a time stamp.
제9 항에 있어서,
상기 분석 단계는
상기 타임 스탬프를 기반으로 동일 모듈을 탐색하여 분석하는 단계와
프로그램의 데이터베이스를 기반으로 상기 상대적 가상 주소 라인을 맵핑하여 정보를 분석하는 단계를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
The method of claim 9,
The analysis step
Searching for and analyzing the same module based on the time stamp, and
A lightweight crash report based debugging method considering security, comprising mapping the relative virtual address lines based on a program database and analyzing the information.
제9 항에 있어서,
상기 분석 단계는
실행 환경에서 오류가 발생한 상기 프로그램의 타임 스탬프와
개발 환경에서 저장된 적어도 하나 이상의 타임 스탬프를 매칭시켜 상기 실행 환경에서의 타임 스탬프와 상기 개발 환경에서의 타임 스탬프를 동일하게 하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
The method of claim 9,
The analysis step
The time stamp of the above program that caused the error in the execution environment and
A lightweight crash report-based debugging method considering security, characterized in that the time stamp in the execution environment is the same as the time stamp in the development environment by matching at least one time stamp stored in the development environment.
제11 항에 있어서,
상기 실행 환경 또는 상기 개발 환경의 실행 파일은 소스 코드의 가상 주소의 시작 주소 값, 소스 코드의 가상 주소의 끝 주소 값 그리고 오류가 발행한 주소 값을 구비하고,
상기 분석 단계는
상기 오류가 발생한 주소 값과 상기 가상 주소의 시작 주소 값의 차이를 이용하여 인터벌 주소 값을 산출하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
The method of claim 11,
The execution environment or the executable file of the development environment includes a start address value of a virtual address of source code, an end address value of a virtual address of source code, and an address value issued by an error,
The analysis step
A lightweight crash report-based debugging method considering security, characterized in that an interval address value is calculated using a difference between the address value where the error occurred and the start address value of the virtual address.
제12 항에 있어서,
상기 분석 단계는
산출된 상기 인터벌 주소 값을 이용하여 상기 오류의 위치를 특정하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
The method of claim 12,
The analysis step
A lightweight crash report-based debugging method considering security, characterized in that the error location is specified by using the calculated interval address value.
KR1020180173011A 2018-12-28 2018-12-28 Lightweight crash report based debugging method considering security KR102165747B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180173011A KR102165747B1 (en) 2018-12-28 2018-12-28 Lightweight crash report based debugging method considering security

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180173011A KR102165747B1 (en) 2018-12-28 2018-12-28 Lightweight crash report based debugging method considering security

Publications (2)

Publication Number Publication Date
KR20200082422A true KR20200082422A (en) 2020-07-08
KR102165747B1 KR102165747B1 (en) 2020-10-14

Family

ID=71600551

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180173011A KR102165747B1 (en) 2018-12-28 2018-12-28 Lightweight crash report based debugging method considering security

Country Status (1)

Country Link
KR (1) KR102165747B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312262A (en) * 2021-03-23 2021-08-27 统信软件技术有限公司 Program debugging method, computing device and storage medium
KR102566618B1 (en) * 2022-12-07 2023-08-16 주식회사 파이랩테크놀로지 Information collection system for linux vulnerability identification and operating method of the same

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070074149A1 (en) * 2005-08-26 2007-03-29 Microsoft Corporation Automated product defects analysis and reporting
US9021312B1 (en) * 2013-01-22 2015-04-28 Intuit Inc. Method and apparatus for visual pattern analysis to solve product crashes
US20150317477A1 (en) * 2014-04-30 2015-11-05 Parsons Corporation System For Automatically Collecting and Analyzing Crash Dumps
JP2017530464A (en) * 2014-09-12 2017-10-12 インテル コーポレイション System on chip (SoC) and low power debug architecture for systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070074149A1 (en) * 2005-08-26 2007-03-29 Microsoft Corporation Automated product defects analysis and reporting
US9021312B1 (en) * 2013-01-22 2015-04-28 Intuit Inc. Method and apparatus for visual pattern analysis to solve product crashes
US20150317477A1 (en) * 2014-04-30 2015-11-05 Parsons Corporation System For Automatically Collecting and Analyzing Crash Dumps
JP2017530464A (en) * 2014-09-12 2017-10-12 インテル コーポレイション System on chip (SoC) and low power debug architecture for systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312262A (en) * 2021-03-23 2021-08-27 统信软件技术有限公司 Program debugging method, computing device and storage medium
CN113312262B (en) * 2021-03-23 2024-05-31 统信软件技术有限公司 Program debugging method, computing device and storage medium
KR102566618B1 (en) * 2022-12-07 2023-08-16 주식회사 파이랩테크놀로지 Information collection system for linux vulnerability identification and operating method of the same

Also Published As

Publication number Publication date
KR102165747B1 (en) 2020-10-14

Similar Documents

Publication Publication Date Title
US8839203B2 (en) Code coverage-based taint perimeter detection
US20210064512A1 (en) Selective memory tracing of program execution
US8789020B2 (en) Interactive debugging environments and methods of providing the same
Wang et al. Automated path generation for software fault localization
US20070079288A1 (en) System and method for capturing filtered execution history of executable program code
CN111459495B (en) Unit test code file generation method, electronic device and storage medium
US20150006961A1 (en) Capturing trace information using annotated trace output
CN107025167B (en) Method and apparatus for data flow analysis using compiler type information in processor trace logs
US8667255B2 (en) Measuring runtime coverage of architectural events of a microprocessor
US20160162385A1 (en) Correlation of violating change sets in regression testing of computer software
CN107220175B (en) Application program endless loop positioning method and device, computer equipment and storage medium
US20160110281A1 (en) System and method for debugging firmware/software by generating trace data
US20100031239A1 (en) Systems, Methods, and Media for Testing Software Patches
Romano et al. An empirical study of bugs in webassembly compilers
KR102165747B1 (en) Lightweight crash report based debugging method considering security
Azim et al. Dynamic slicing for android
CN108021791A (en) Data guard method and device
CN111597069A (en) Program processing method, program processing apparatus, electronic device, and storage medium
Mahmud et al. Api change impact analysis for android apps
KR20140088963A (en) System and method for testing runtime error
Mahmud et al. Analyzing the impact of API changes on Android apps
KR20190020363A (en) Method and apparatus for analyzing program by associating dynamic analysis with static analysis
US9158537B2 (en) Streamlining hardware initialization code
CN110096888B (en) Method and system for accelerating verification and analyzing SMM potential safety hazard
JP4763743B2 (en) Program operation comparison apparatus and method and program

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant