KR102165747B1 - 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법 - Google Patents

보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법 Download PDF

Info

Publication number
KR102165747B1
KR102165747B1 KR1020180173011A KR20180173011A KR102165747B1 KR 102165747 B1 KR102165747 B1 KR 102165747B1 KR 1020180173011 A KR1020180173011 A KR 1020180173011A KR 20180173011 A KR20180173011 A KR 20180173011A KR 102165747 B1 KR102165747 B1 KR 102165747B1
Authority
KR
South Korea
Prior art keywords
information
error
crash report
security
crash
Prior art date
Application number
KR1020180173011A
Other languages
English (en)
Other versions
KR20200082422A (ko
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/ko
Publication of KR20200082422A publication Critical patent/KR20200082422A/ko
Application granted granted Critical
Publication of KR102165747B1 publication Critical patent/KR102165747B1/ko

Links

Images

Classifications

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

Abstract

본 발명은 전자 기기에서 프로그램을 실행하는 실행 단계, 프로그램이 실행하는 도중 크래시가 발생하면, 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동 생성하는 생성 단계, 생성된 크래시 리포트를 제공받아 크래시 리포트에 담긴 정보를 분석하여 오류 정보를 추출하는 분석 단계 및 추출된 오류 정보를 추적하여 오류의 위치를 특정하는 추적 단계를 포함하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 구비한다.

Description

보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법{Lightweight crash report based debugging method considering security}
본 발명은 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법에 대한 것으로, 보다 상세하게는 오류 추적에 요구되는 필수 정보만 포함된 고품질 크래시 리포트로 인해 리포트의 크기 경량화, 가독성 및 보안성을 향상할 수 있으며, 생성한 크래시 리포트를 이용하여 소스 코드의 라인 단위까지 오류 추적할 수 있는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법에 관한 것이다.
최근에는 사용자에게 제공되는 소프트웨어의 기능이 점차 복잡해지고 있다. 이에 따라 지난 수십 년간 소프트웨어의 규모와 함께 개발 비용 또한 커지는 추세이다. 이 같은 상황에서 소프트웨어의 생애주기 중, 가장 많은 비용이 소요되는 부분은 디버깅으로 전체 개발 비용의 약 50%를 차지한다.
또한, 디버깅 비용은 소프트웨어의 생애주기가 진행됨에 따라 비례하여 증가하기 때문에 비용이 가장 크게 발생하는 부분은 소프트웨어가 배포된 이후 즉, 유지 및 보수 단계에 수행하는 디버깅이다.
종래의 디버깅하는 과정은 다음과 같다.
먼저, 실행 환경에서 배포된 소프트웨어를 실행하고, 오류 발생 시 크래시 리포트 생성한다. 그리고 개발팀에 전달된 크래시 리포트를 분석한 다음, 오류의 위치를 추적하여, 오류를 수정한다. 이후 테스트를 거쳐, 모든 테스트가 통과되었을 때, SW를 재배포한다.
즉, 종래의 디버깅하는 과정은 각 단계에 걸쳐 많은 연구가 진행되고 있으며, 종래의 크래시 리포트 생성 및 분석 그리고 오류 추적의 세 단계에서 다음과 같은 한계점이 있다.
첫 번째로 종래의 크래시 리포트 생성 단계에서는 오류 발생 시 운영체제로부터 시스템 정보, 메모리 덤프, 크래시 덤프와 같은 내용을 포함한 덤프 파일을 생성한다. 가공되지 않고 생성된 덤프 파일은 전체를 크래시 리포트에 첨부하는데 이 경우 사용자의 실행 환경에 대한 다양한 정보를 개발자가 확인할 수 있다는 장점이 있으나, 가공되지 않은 정보로 인해 오류 추적 단계에서 의미 없는 데이터가 포함된다.
또한, 첨부되는 데이터 중에서 사용자가 사용하는 다른 모듈의 정보 및 개인 정보가 포함될 가능성이 있어 보안 측면에서도 취약한 단점이 있다.
두 번째로 종래의 크래시 리포트 분석 단계에서는 개발자에게 전달된 크래시 리포트에 첨부된 데이터를 가공하여 개발자가 덤프 파일의 내용을 보다 이해하기 쉽게 하거나 오류 추적에 용이한 정보를 생성한다. 그러나 상술한 바와 같이, 오류 추적에 불필요한 데이터와 함께 수집된 덤프 데이터들로 인해서 정보 가공에 많은 시간이 소요된다.
또한, 가공된 오류 정보(또는 크래시 정보)라도 분석해야 할 양이 많아져 개발자에게 많은 시간과 노력을 요구한다.
세 번째로 종래의 오류 추적 단계에서 기존 기술들은 분석된 오류 정보와 소스 코드를 사용해 파일 또는 함수 단위의 오류를 추적한다. 그러나 추적 단위가 크기 때문에 정확한 오류 위치를 찾는데 개발자의 추가적인 시간과 노력이 요구된다. 오류 추적 도구인 WinDbg의 경우 덤프 파일과 소스 코드 그리고 통합 개발 환경에서 디버깅 모드에 사용되는 프로그램 데이터베이스 정보를 함께 사용하여 라인 수준의 오류 추적을 수행한다.
이로 인해 개발자의 노력을 크게 감소시켜 줄 수 있으나, 덤프 파일 전체를 입력으로 사용하여 불필요한 정보 분석 및 가공으로 인한 문제점이 발생하며, 프로그램 데이터베이스 파일의 위치를 특정할 수 없는 경우에는 라인 수준의 오류 추적이 불가능해 추가적인 개발자의 시간과 노력이 요구되는 한계점이 있다.
본 발명에서는 오류 추적에 요구되는 필수 정보만 포함된 고품질 크래시 리포트로 인해 리포트의 크기 경량화, 가독성 및 보안성을 향상할 수 있으며, 생성한 크래시 리포트를 이용하여 소스 코드의 라인 단위까지 오류 추적할 수 있는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 제안하고자 한다.
본 발명은, 전자 기기에서 프로그램을 실행하는 실행 단계, 프로그램이 실행하는 도중 크래시가 발생하면, 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동 생성하는 생성 단계, 생성된 크래시 리포트를 제공받아 크래시 리포트에 담긴 정보를 분석하여 오류 정보를 추출하는 분석 단계 및 추출된 오류 정보를 추적하여 오류의 위치를 특정하는 추적 단계를 포함하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 구비한다.
본 발명은 오류 추적에 요구되는 필수 정보만 포함된 고품질 크래시 리포트로 인해 리포트의 크기 경량화, 가독성 및 보안성을 향상할 수 있다.
또한, 본 발명은 생성한 경량의 크래시 리포트를 이용하여 소스 코드의 라인 단위까지 오류 추적할 수 있기 때문에 빠르고 정확하게 오류를 수정할 수 있다.
또한, 본 발명은 개인정보 보안이 가능한 경량 크래시 리포트 생성하고, 분석 및 오류 추적 단계를 자동화함으로써 디버깅 비용 감소시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 시스템을 설명하기 위한 것이다.
도 2는 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 설명하기 위한 것이다.
도 3은 본 발명의 일실시 예에 따라 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 자세하게 설명하기 위한 것이다.
도 4는 본 발명의 일실시 예에 따른 환경별 상대적 가상 주소에 따른 크래시 지점을 설명하기 위한 것이다.
도 5는 본 발명의 일실시 예에 따라 상대 가상주소와 소스 코드 라인 맵핑 정보를 설명하기 위한 것이다.
도 6은 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 이용하여 오류 추적 분석 시간 및 수집 데이터 항목 비교한 것이다.
이하 설명하는 기술은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나 이는 이하 설명하는 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 이하 설명하는 기술의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 해당 구성요소들은 상기 용어들에 의해 한정되지는 않으며, 단지 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 이하 설명하는 기술의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
본 명세서에서 사용되는 용어에서 단수의 표현은 문맥상 명백하게 다르게 해석되지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함한다." 등의 용어는 실시된 특징, 개수, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 의미하는 것이지, 하나 또는 그 이상의 다른 특징들이나 개수, 단계 동작 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하지 않는 것으로 이해되어야 한다.
도면에 대한 상세한 설명을 하기에 앞서, 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.
또, 방법 또는 동작 방법을 수행함에 있어서, 상기 방법을 이루는 각 과정들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 과정들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
도 1은 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 시스템을 설명하기 위한 것이다.
도 1을 살펴보면, 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 시스템(1000)은 전자 기기(100)와 보안 서버(300)를 포함할 수 있다.
전자 기기(100)는 복수의 프로그램 또는 복수의 소프트웨어를 실행시킬 수 있는 기기일 수 있다. 예를 들어, 전자 기기(100)는 휴대용 단말기, 스마트폰, 태블릿 PC(Tablet PC), 컴퓨터, 랩탑 컴퓨터 등등을 포함할 수 있다. 이에 한정되는 것은 아니며, 복수의 프로그램 또는 복수의 소프트웨어를 실행시킬 수 있는 모든 기기를 포함할 수 있다.
전자 기기(100)는 제어부(110)와 통신부(130)를 포함할 수 있다.
제어부(110)는 프로그램 또는 소프트웨어를 실행하는 도중 크래시가 발생하면 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동 생성할 수 있다. 크래시는 소프트웨어를 사용 중 코드 상의 결함으로 인해 발생하는 강제 종료와 같은 오류로 정의될 수 있다. 이러한 크래시는 사용성 측면에서 큰 문제를 야기할 수 있다. 크래시는 주로 처리되지 않은 예외(Unhandled Exception)와 같은 오류에 의해 발생할 수 있다. 제어부(110)는 메인 보드 또는 CPU(Central Processing Unit)라 칭할 수 있다. 오류는 버그 또는 에러라 칭할 수 있다.
필수 정보는 전자 기기(100)의 실행 환경에서 개인 정보를 침해하지 않으면서 오류 추적에 유용한 프로세스, 예외, 메모리 정보일 수 있다. 크래시 리포트는 전자 기기(100)의 실행 환경에서 개인 정보를 침해하지 않으면서 오류 추적에 유용한 프로세스, 예외, 메모리 정보를 수집, 가공하여 보안성을 높인 리포트일 수 있다. 즉, 크래시 리포트는 필수정보를 이용하여 보안성을 개선한 고품질 경량 크래시 리포트일 수 있다.
통신부(130)는 제어부(110)와 전기적으로 연결되어, 제어부(110)로부터 자동 생성된 크래시 리포트를 제공받아, 보안 서버(300)에 전송할 수 있다.
보안 서버(300)는 전자 기기(100)와 데이터를 전송하거나 전송받을 수 있는 보안 통신부(330) 그리고 크래시 리포트를 분석하여 오류 정보 또는 오류 코드를 추출하고, 추출된 오류를 치료하여 프로그램을 업그레이드 또는 패치하도록 제어할 수 있는 보안 제어부(310)를 포함할 수 있다. 즉, 보안 서버(300)는 크래시를 추적하여 수정하는 디버깅 작업을 실행 또는 수행할 수 있다.
보안 통신부(330)는 전자 기기(100)로부터 크래시 리포트를 전송받거나 전자 기기(100)에 업그레이드되거나 패치된 프로그램을 전송할 수 있다.
보안 제어부(310)는 크래시 리포트를 제공받아 크래시 리포트에 담긴 정보를 분석하여 오류 정보를 추출할 수 있다. 오류 정보는 오류 코드 또는 오류 데이터라 칭할 수 있다.
보안 제어부(310)는 추출된 오류 정보를 추적하여 오류의 위치를 특정할 수 있다. 보안 제어부(310)는 실행 환경에서 전달받은 크래시 리포트를 소스 코드와 연결하여 정밀한 단위의 오류 추적이 가능하기 때문에 보다 정확하게 오류를 감지 또는 체크할 수 있다.
보안 제어부(310)는 오류의 위치가 특정 또는 고정되면, 특정된 오류의 위치에 대한 정보 또는 데이터를 치료 또는 제거할 수 있다.
보안 제어부(310)는 특정된 오류의 위치에서 오류를 제거하거나 치료함으로써, 오류가 치료된 정보를 생성할 수 있다. 정보는 코드 또는 데이터라 칭할 수 있다.
보안 제어부(310)는 오류가 발생한 코드를 치료하고, 오류가 제거된 코드를 기초로 프로그램을 재생성할 수 있다. 보안 제어부(310)는 재생성된 프로그램을 전자 기기에 전송할 수 있다. 즉, 보안 제어부(310)는 재생성된 프로그램을 재배포할 수 있다.
전자 기기(100)는 보안 제어부(310)로부터 재생성된 프로그램을 전송받아, 기존의 프로그램을 업그레이드 또는 패치시킬 수 있다.
도 2는 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 설명하기 위한 것이다.
도 2를 살펴보면, 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법은 실행단계, 생성단계, 분석단계 그리고 추적단계를 포함할 수 있다. 실행단계와 생성단계는 전자 기기의 실행 환경(Execution environment)에서 실행될 수 있고, 분석단계와 추적단계는 보안 서버의 개발 환경(Development environment)에서 실행될 수 있다.
전자 기기는 실행가능한 소정의 프로그램 또는 소정의 소프트웨어를 디스플레이할 수 있다(S10).
전자 기기는 제어부의 제어 하에 선택된 소정의 프로그램 또는 소정의 소프트웨어를 실행시킬 수 있다(S20). 예를 들어, 소정의 프로그램 또는 소정의 소프트웨어는 응용 프로그램, 응용소프트웨어, 애플리케이션(application), 어플, 앱 등을 포함할 수 있다.
전자 기기는 제어부의 제어 하에 프로그램 또는 소프트웨어가 실행하는 도중 크래시를 실시간으로 체크 또는 감지할 수 있다(S30).
전자 기기는 제어부의 제어 하에 프로그램 또는 소프트웨어가 실행하는 도중 크래시가 발생 또는 감지되면, 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동으로 생성할 수 있다(S40). 예를 들어, 필수 정보는 전자 기기의 실행 환경에서 개인 정보를 침해하지 않으면서 오류 추적에 유용한 프로세스, 예외, 메모리 정보일 수 있다. 크래시 리포트는 전자 기기의 실행 환경에서 오류 추적에 유용한 프로세스, 예외, 메모리 정보를 수집, 가공하기 때문에 경량화할 수 있다. 그리고 크래시 리포트는 전자 기기의 실행 환경에서 개인 정보를 제외시킬 수 있어 보안성을 개선시킬 수 있다.
전자 기기는 제어부의 제어 하에 생성된 크래시 리포트를 통신부에 제공할 수 있다. 통신부는 생성된 크래시 리포트를 보안 서버에 전송할 수 있다(S50).
보안 서버는 전자 기기에서 크래시 리포트가 전송되면 크래시 리포트에 담긴 정보를 분석할 수 있다. 보안 서버는 보안 통신부를 통해 크래시 리포트를 전송받고, 보안 제어부의 제어 하에 크래시 리포트를 분석할 수 있다(S60).
보안 서버는 제어부의 제어 하에 분석된 크래시 리포트에 담긴 정보를 기반으로 프로그램 또는 소프트웨어의 오류 정보를 추출할 수 있다(S70).
보안 서버는 보안 제어부의 제어 하에 추출된 오류 정보를 추적하여 오류의 위치를 특정할 수 있다. 보안 서버는 보안 제어부의 제어 하에 크래시 리포트를 소스 코드와 연결하여 정밀한 단위의 오류 정보를 추적함으로써, 오류의 위치를 보다 정확하게 특정할 수 있다.
보안 서버는 보안 제어부의 제어 하에 오류의 위치가 특정되면, 오류의 위치를 고정시킬 수 있다(S80).
보안 제어부는 오류가 발생된 코드 또는 오류가 발생된 정보의 위치를 추적하고 특정한 후 고정시킴으로써, 프로그램 중 어느 부분 또는 어느 위치에 오류가 발생한 것인지 정확하게 인지할 수 있다. 이후 보안 서버는 보안 제어부의 제어 하에 고정된 오류의 위치에 대한 정보 또는 데이터를 치료할 수 있다.
보안 제어부는 고정된 오류의 위치에서 오류를 제거하거나 치료함으로써, 오류가 치료된 정보를 생성할 수 있다. 정보는 코드 또는 데이터라 칭할 수 있다.
보안 제어부는 오류가 발생한 코드를 치료하고, 오류가 제거된 코드를 기초로 프로그램을 재생성할 수 있다. 보안 제어부는 재생성된 프로그램을 테스트할 수 있다(S90).
보안 제어부는 재생성된 프로그램을 테스트한 후 오류가 계속해서 발생되면, 분석된 크래시 리포트에 담긴 정보를 기반으로 프로그램 또는 소프트웨어의 오류 정보를 추출하는 단계로 이동할 수 있다(S70).
보안 제어부는 오류가 치료될 때까지 분석된 크래시 리포트에 담긴 정보를 기반으로 프로그램 또는 소프트웨어의 오류 정보를 추출하고, 오류 정보를 추적하고, 오류의 위치를 특정하고 이후 특정된 오류의 위치를 고정하여 오류를 치료하거나 에러를 제거할 수 있다.
보안 제어부는 재생성된 프로그램을 테스트한 후 오류가 치료되면(S100), 실행시킬 수 있는 프로그램 또는 소프트웨어라고 판단하고 이를 전자 기기에 전송할 수 있다(S110). 예를 들어, 보안 제어부는 기존의 프로그램보다 높은 버전의 프로그램을 전자 기기에 전송할 수 있다. 이에 전자 기기는 보안 제어부로부터 재생성된 프로그램을 전송받아, 기존의 프로그램을 업그레이드 또는 패치시킴으로써, 오류가 제거된 높은 버전의 프로그램을 실행시킬 수 있다.
도 3은 본 발명의 일실시 예에 따라 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법을 자세하게 설명하기 위한 것이다.
도 3을 살펴보면, 전자 기기는 실행 환경에서 배포된 소프트웨어(Executable file)를 실행할 수 있다(S110). 실행 환경에서 실행되는 소프트웨어는 비지니스 로직(Business logic, 131)과 오류 추적 라이브러리(132)를 포함할 수 있다. 비지니스 로직(131)은 구현한 소스 코드라 칭할 수 있다.
실행 환경에서 배포된 소프트웨어를 실행하는 도중 크래시가 발생하면 크래시 리포트를 자동으로 생성하는 단계를 수행할 수 있다(S130). 크래시 리포트를 자동으로 생성하는 단계(S130)는 실행되는 소프트웨어에서 덤프 파일을 생성(133)하고, 오류 추적용 필수 정보를 수집(134)하고, 크래시 리포트를 작성(135)할 수 있다.
크래시 리포트는 배포된 환경 정보, 라인 수준의 오류 추적에 요구되는 최소한의 정보인 실행 파일 고유 번호, 상대적 오류 주소 정보 그리고 스택 정보를 덤프 파일 또는 덤프 데이터로 가공함으로써, 개인 정보가 포함되지 않아 데이터의 크기를 현저하게 줄일 수 있다. 이에 전자 기기는 경량의 크래시 리포트를 생성하고, 생성된 경량의 크래시 리포트를 보안 서버에 전송 또는 전달할 수 있다.
표 1은 기존 크래시 리포트의 수집 정보와 제안한 크래시 리포트의 수집 정보를 비교한 것이다.
[표 1]
Figure 112018132031351-pat00001
표 1에 설명된 바와 같이, 본 발명에서 제안하는 크래시 리포트는 덤프 파일로부터 크게 4가지 종류의 정보를 수집할 수 있다. 예를 들어, 각각 시스템 정보, 모듈 정보, 스레드 정보, 예외 정보일 수 있다.
시스템 정보에서는 개발자가 오류를 재현하기 위해 기본적인 실행 환경의 환경 정보를 이해할 수 있도록 1) 운영체제 종류와 2) 운영체제의 버전, 3) 프로세서의 레벨, 그리고 4) 프로세서의 아키텍처 정보를 수집할 수 있다.
모듈 정보에서는 크래시 즉, 예외 상황이 발생한 모듈의 정보를 수집할 수 있다. 예를 들어, 모듈 정보들은 실행 파일이나 동적 라이브러리와 같은 1) 모듈의 이름, 2) 모듈이 실제 메모리에 로드된 물리 주소 및 크기 정보, 그리고 해당 모듈의 고유 번호를 의미할 수 있으며, 개발 환경에서 일치하는 모듈을 찾는데 사용되는 3) 타임 스탬프일 수 있다. 타임 스탬프는 프로그램의 버전이라 칭할 수 있다.
스레드 정보에서는 예외 상황이 발생한 지점까지의 실행 이력을 담아 오류 재현에 도움을 주는 정보를 수집할 수 있다. 예를 들어, 스레드 정보들은 1) 예외 상황이 발생한 스레드 ID, 2) 백트레이스 방식의 콜 스택 정보일 수 있다.
예외 정보는 실질적으로 개발에서 어떤 종류의 예외 상황이 발생했는지를 구체적으로 알려 줄 수 있는 정보를 수집할 수 있다. 예를 들어, 예외 정보들은 1) 오류 발생 스레드 ID, 2) 오류가 발생한 물리 메모리 주소, 그리고 3) Null pointer dereference, Divide by zero와 같은 오류의 종류 정보를 수집할 수 있다.
또한, 오류 추적에 요구되는 필수 정보는 상대적 가상 주소와 타임 스탬프일 수 있다. 상대적 가상 주소와 타임 스탬프를 이용하여 라인 단위의 오류를 추적할 수 있다. 이에 대한 자세한 설명은 후술하기로 한다.
보안 서버는 개발 환경에서 수행되는 크래시 리포트를 분석하는 단계를 수행할 수 있다(S150).
크래시 리포트를 분석하는 단계는 전달된 또는 전송된 크래시 리포트의 내용 분석하고, 분석 결과에 기반한 배포된 소프트웨어와 일치하는 프로젝트의 경로를 특정하고, 프로젝트를 컴파일 시 생성한 프로그램을 데이터베이스 파일로 특정 및 분석을 수행할 수 있다. 즉, 크래시 리포트를 분석하는 단계는 개발 환경에서 전달받은 크래시 리포트에 담긴 정보와 배포된 소프트웨어의 프로젝트 경로에 위치한 실행 파일 또는 동적 라이브러리 파일을 분석함으로써, 오류 정보를 추출할 수 있다.
크래시 리포트를 분석하는 단계(S150)는 제1 분석 단계와 제2 분석 단계로 구분될 수 있다. 제1 분석 단계는 타임 스탬프를 기반으로 동일 모듈을 탐색하여 분석하는 단계일 수 있다(331,332,334). 제2 분석 단계는 프로그램의 데이터베이스를 기반으로 RVA(Relative Virtual Address-상대적 가상 주소)-라인을 맵핑하여 정보를 분석하는 단계일 수 있다(331,333,335). RVA(Relative Virtual Address)는 프로그램의 이미지 파일에서 메모리 항목의 주소일 수 있다. 항목의 RVA는 디스크상의 파일(파일 포인터)내의 위치와 대부분 다를 수 있다.
제1 분석 단계는 크래시 리포트로부터 얻을 수 있는 주소 차 정보를 사용하기 위해서 타임 스탬프를 활용해 동일 모듈을 탐색할 수 있다(331,332,334).
제1 분석 단계는 크래시 리포트에 포함된 모듈 이름과 타임 스탬프를 추출할 수 있다. 제1 분석 단계는 모듈 이름과 타임 스탬프의 정보를 이용해 사전에 배포된 소프트웨어들의 프로젝트 경로들을 탐사 또는 검색하면서 오류 모듈과 같은 확장자를 가지는 파일들의 헤더를 분석할 수 있다. 제1 분석 단계는 분석된 오류 모듈과 같은 확장자를 가지는 파일들의 헤더를 통해 동일한 타임 스탬프를 가지는 실행 파일 혹은 동적 라이브러리 파일의 경로를 획득할 수 있다(331,332,334).
제2 분석 단계는 주소차 정보를 활용하기 위해서 프로그램의 데이터베이스를 분석할 수 있다(331,333,335). 프로그램의 데이터베이스 파일은 배포되는 모듈을 컴파일할 때 디버깅 모드에서의 옵션 설정을 통해 배포되는 모듈과 같은 경로에 생성할 수 있다(331,333,335). 예를 들어, 프로그램의 데이터베이스 파일은 PDB 파일로 클래스, 메서드 및 소스 코드를 RVA(Relative Virtual Address-상대적 가상 주소)로 표현된 파일일 수 있다.
PDB 파일은 개발시 디버깅을 지원하기 위해 생성될 수 있고, 해당 모듈을 동작시키기 위해 필요한 리소스들의 경로 정보, 소스 코드의 라인 별 RVA 맵핑 정보, 심볼 테이블과 같은 정보를 포함할 수 있다.
제2 분석 단계는 해당 파일의 라인 별 RVA 맵핑 정보를 분석하여 획득할 수 있다(331,333,335).
크래시 리포트를 분석하는 단계는 제1 분석 단계를 통해 획득한 크래시 리포트에서 추출한 주소차 정보(331,332,334)와 제2 분석 단계를 통해 획득한 소스 코드 라인 별 RVA 맵핑 정보(331,333,335)를 오류 추적 단계에 전달 또는 전송할 수 있다.
마지막으로 오류를 추적하는 단계를 수행할 수 있다(S170).
오류를 추적하는 단계(S170)에서는 분석 단계에서 전송되는 크래시 리포트에서 추출한 주소차 정보와 소스 코드 라인 별 RVA 맵핑 정보를 기반으로 크래시 발생 지점을 도출할 수 있다(336,337,338,339). 라인 단위별 오류를 추적하는 단계(S170)에서는 크래시 리포트를 분석하는 단계에서 전달받은 두 정보인 소스 코드 라인별 RVA 맵핑 정보와 오류 모듈에서의 주소 차 정보를 통해서 라인 단위의 오류 위치를 특정할 수 있다(336,337,338,339). 이에 대한 자세한 설명은 후술하기로 한다.
상술한 바와 같이, 추적 단계(S170)는 두 가지 입력 값인 크래시 리포트에 포함된 크래시 지점의 인터벌 주소와 프로그램 데이터 파일의 LINES 섹션에 추출한 소스 코드-RVA 맵핑 정보를 사용하여 소스 코드에서의 크래시 발생 지점을 도출할 수 있다(336,337,338,339).
도 4는 본 발명의 일실시 예에 따른 환경별 상대적 가상 주소에 따른 크래시 지점을 설명하기 위한 것이다.
도 4를 살펴보면, 실질적으로 동일한 exe파일이지만 개발 환경(Development environment)의 주소 값과 실행 환경(Execution environment)의 주소 값은 다를 수 있다. 예를 들어, 개발 환경의 주소의 시작 값은 0x21963126일 수 있고, 실행 환경의 주소 시작 값은 0x00000000일 수 있다. 여기서 0x~~~로 시작하는 숫자들은 상대적 가상 주소(RVA) 값일 수 있다.
개발 환경의 exe파일과 실행 환경의 exe파일은 헤더 파일을 포함할 수 있다. 예를 들어 개발 환경의 exe파일의 헤더 파일은 0x21963126~0x22363126의 주소 값을 가질 수 있다. 그리고 실행 환경의 exe파일의 헤더 파일은 0x00000000~0x40000000의 주소 값을 가질 수 있다.
헤더 파일 내용은 파일 헤더(file header), 옵셔널 헤더(optional header), 섹션 헤더(section header)로 나눌 수 있다. 파일 헤더(file header), 옵셔널 헤더(optional header), 섹션 헤더(section header) 중 적어도 하나의 헤더는 타임 스탬프 정보를 포함할 수 있다.
타임 스탬프는 소프트웨어의 빌드 시점으로 정의될 수 있다. 타임 스탬프는 버전이라 칭할 수 있다.
전자 기기의 제어부는 오류가 발생한 실행 환경(Execution environment)의 타임 스탬프 정보를 추출하여 크래시 리포트에 출력할 수 있다. 보안 제어부는 전자 기기를 통해 전송되는 크래시 리포트의 타임 스탬프를 확인할 수 있다.
보안 제어부는 실행 환경에서 실행되는 프로그램 또는 소프트웨어에 대한 적어도 하나 이상의 타임 스탬프를 저장하거나 구비할 수 있다. 예를 들어 보안 제어부는 실행 환경에서 실행되는 프로그램 또는 소프트웨어에 대한 여러 버전을 저장하거나 구비할 수 있다.
보안 제어부는 오류가 발생한 소프트웨어의 타임 스탬프(0x5bbac917)와 저장된 적어도 하나 이상의 타임 스탬프를 서로 매칭시킴으로써, 오류가 발생한 소프트웨어의 타임 스탬프(0x5bbac917)와 동일한 소프트웨어의 타임 스탬프(0x5bbac917)를 서칭할 수 있다.
예를 들어, 오류가 발생한 소프트웨어의 버전이 V2.3이라고 가정할 경우, 보안 제어부는 소프트웨어의 버전 V2.0 내지 소프트웨어의 버전 V2.9를 서로 매칭시켜 오류가 발생한 소프트웨어의 버전 V2.3과 동일한 소프트웨어의 버전 V2.3를 검색할 수 있다.
개발 환경의 exe파일과 실행 환경의 exe파일은 상대적 가상 주소를 포함할 수 있다.
개발 환경의 exe파일의 상대적 가상 주소는 0x22363126~0xFFFFFFFF의 주소 값을 가질 수 있다. 그리고 실행 환경의 exe파일의 상대적 가상 주소는 0x40000000~0xFFFFFFFF의 주소 값을 가질 수 있다. 상대적 가상 주소는 소스 코드에 대한 상대적 가상 주소 정보일 수 있다.
개발 환경의 exe파일에서 0x22363126의 주소 값과 실행 환경의 exe파일에서 0x40000000는 소스 코드 가상 주소의 시작 주소 값일 수 있다. 그리고 개발 환경의 exe파일에서 0x7FFFFFFF의 주소 값과 실행 환경의 exe파일에서 0x7FFFFFFF는 소스 코드 가상 주소의 끝 주소 값일 수 있다.
개발 환경의 주소 값과 실행 환경의 주소 값은 다를 수 있으나 오류가 발생한 주소와 시작 주소를 뺀 값인 인터벌 주소 값은 변하지 않을 수 있다. 이를 이용하여 보안 제어부는 오류가 발생한 소스 코드의 라인 단위까지 찾을 수 있다.
예를 들어, 실행 환경에서 오류가 발생한 주소 값이 0x40080000라 가정할 때, 보안 제어부는 실행 환경에서 오류가 발생한 주소 값에서 실행 환경에서 소스 코드 가상 주소의 시작 주소 값을 뺀 인터벌(Interval) 주소 값을 산출할 수 있다.
즉, 보안 제어부는 0x40080000(오류가 발생한 주소 값)에서 0x40000000(소스 코드 가상 주소의 시작 주소 값)를 뺀 0x00080000(인터벌 주소 값)을 산출할 수 있다.
이에 보안 제어부는 개발 환경에서 소스 코드 가상 주소의 시작 주소 값에 인터벌 주소 값을 합하여 개발 환경에서 오류가 발생한 주소 값을 산출할 수 있다.
즉, 보안 제어부는 0x22363126(소스 코드 가상 주소의 시작 주소 값)에서 0x00080000(인터벌 주소 값)을 더한 0x22443126(오류가 발생한 주소 값)을 산출할 수 있다.
다시 말해. 각 환경에서 오류가 발생한 주소 값(exception address)와 가상 주소의 시작 주소 값(start address)의 차를 구하면 인터벌 주소 값(0x00080000)를 구할 수 있다. 이에 보안 제어부는 어느 환경이든 시작 주소 값부터 0x00080000만큼 이동하면 문제가 되는 소스 코드 주소 값이 산출할 수 있다.
도 5는 본 발명의 일실시 예에 따라 상대 가상주소와 소스 코드 라인 맵핑 정보를 설명하기 위한 것이다.
도 2 내지 도 4에서 상술한 바와 라인 단위 오류 추적 단계에서는 크래시 리포트 분석단계에서 전달받은 소스 코드 라인별 RVA 맵핑 정보와 오류 모듈에서의 주소차 정보를 통해서 라인 단위의 오류 위치를 특정할 수 있다.
같은 모듈일 경우(도 4 참조) 동일한 주소 차를 이용할 경우, 오류 지점이 정확하게 일치하기 때문에 실행 환경과 무관하게 오류 지점을 특정할 수 있다.
이와 같은 원리를 활용하여 보안 제어부는 필요 최소한의 데이터만으로 높은 정확도의 오류 추적을 할 수 있다. 이를 달성하기 위해서는 주소 차 또는 주소 차의 값이 지시하는 지점을 추적할 필요가 있다.
도 2 내지 도 4에서 상술한 프로그램 데이터베이스 분석을 통해 획득한 라인별 RVA 맵핑 정보는 함수의 목록으로 구성될 수 있다.
함수의 목록 내부에는 도 5에 도시된 바와 같은 형태의 RVA-라인 맵핑 정보가 기록될 수 있다.
line 37은 오류가 발생한 소스 코드의 라인 위치를 나타낼 수 있다. [00023230][0001:0002230]은 RVA(Relative Virtual Address)를 나타낼 수 있다. 그리고 len = 0x3F는 RVA의 길이를 나타낼 수 있다. [C:\..\main.cpp]: 오류가 발생한 파일 위치를 나타낼 수 있다. (MD5: 7A..9F): 해쉬 값을 나타낼 수 있다.
같은 모듈이 아닌 다른 모듈일 경우, 오류가 난 지점의 상대 가상주소와 맵핑된 상대 가상주소는 일치하지 않을 수 있다. 즉, 다른 모듈일 경우 주소 차의 값이 다를 수 있다. 이에 보안 제어부는 라인에 맵핑된 상대 가상주소와 상술한 RVA의 길이의 정보를 활용하여 오류의 위치를 추적할 수 있다.
최종적으로 주소 차의 값이 포함되는 범위의 라인을 찾으면 크래시 리포트에 포함된 정보들과 함께 오류 라인 정보를 도출할 수 있다.
도 6은 본 발명의 실시 예에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 시스템을 이용하여 오류 추적 분석 시간 및 수집 데이터 항목 비교한 것이다.
도 6에 도시된 바와 같이, (A) Error tracing time은 종래의 오류 추적 도구인 WinDbg가 17.545(S)이고, 본 발명은 3.821(S)이다. (B) Collected # of dump data는 종래의 오류 추적 도구인 WinDbg가 82 개이고, 본 발명은 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이다.
본 발명은 정상적으로 동작하는 오픈 소스에 크래시 발생을 유도하기 위해 자주 발생하는 오류 중 하나의 예로 Divide by zero 에러를 주입하였다. 예를 들어 Divide by zero 에러는 0으로 나눌 때, 발생하는 에러일 수 있다. Divide by zero 에러는 int b = 0; int a = 100 / b; cout << a << endl;로 표현될 수 있다.
종래의 오류 추적 도구인 WinDbg는 표 1에서와 같이 실행 환경의 시스템 환경 정보를 포함한 약 82개의 메모리 덤프 분석 결과를 받아 오류 추적을 할 수 있다. 하지만 개발자가 분석 결과를 한눈에 보기 힘들고, 오류 추적을 위한 분석에 많은 비용을 발생시킨다.
반면 본 발명은 약 72% 감소한 23개의 분석 결과만 확인하여도 종래의 오류 추적 도구인 WinDbg와 동일한 오류 추적 정확도를 보일 수 있다.
따라서, 본 발명은 크래시 리포트의 크기도 경량화될 수 있고, 오류 추적에 필요한 핵심 내용만 읽기 때문에 가독성도 향상될 수 있다.
본 발명은 오류 라인 위치를 보여주는 총 분석 시간이 종래의 오류 추적 도구인 WinDbg 대비 약 78% 감소할 수 있다. 이와 같이, 소요되는 시간이 더 감소한 이유는 다음과 같다.
첫 번째는 종래의 WinDbg는 입력 값의 형태로 덤프 파일 자체가 입력 값이 되어 분석해야 할 데이터가 방대할 수 있다. 하지만 본 발명에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법은 경량화된 크래시 리포트를 활용하기 때문에 분석해야 할 데이터의 크기가 작아 분석 소요 시간을 감소할 수 있다.
두 번째는 종래의 WinDbg에서 라인 위치까지 추적하기 위해 프로그램 데이터베이스 파일을 특정하는 과정이 불가능하거나 오래 걸렸다면 본 발명에 따른 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법은 추적 경로를 입력 값으로 사전에 설정하기 때문에 상대적으로 프로그램 데이터베이스 파일을 특정하는 시간을 감소할 수 있다.
본 발명의 실시 예 및 본 명세서에 첨부된 도면은 전술한 기술에 포함되는 기술적 사상의 일부를 명확하게 나타내고 있는 것에 불과하며, 전술한 기술의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시 예는 모두 전술한 기술의 권리범위에 포함되는 것이 자명하다고 할 것이다.
100 : 전자 기기
110 : 통신부
130 : 제어부
300 : 보안 서버
310 : 보안 통신부
330 : 보안 제어부

Claims (13)

  1. 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법에 있어서,
    전자 기기에서 프로그램을 실행하는 실행 단계;
    상기 프로그램이 실행하는 도중 크래시가 발생하면, 상기 크래시에 대한 정보와 오류 추적에 요구되는 필수 정보를 수집하면서 크래시 리포트를 자동 생성하는 생성 단계; - 상기 필수 정보는 상대적 가상 주소(Relative Virtual Address, RVA)와 타임 스탬프를 포함함 -
    생성된 상기 크래시 리포트를 제공받아 상기 크래시 리포트에 담긴 상기 정보를 분석하여 오류 정보를 추출하는 분석 단계; 및
    추출된 상기 오류 정보를 추적하여 오류의 위치를 특정하는 추적 단계;
    를 포함하고,
    상기 분석 단계는 상기 타임 스탬프를 기반으로 동일 모듈을 탐색하여 분석하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  2. 제1 항에 있어서,
    상기 생성 단계는
    상기 프로그램에서 덤프 파일을 생성하고, 오류를 추적할 수 있는 상기 필수 정보를 수집하고, 상기 크래시 리포트를 자동으로 생성하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  3. 제2 항에 있어서,
    상기 크래시 리포트는
    상기 프로그램을 실행할 수 있는 실행 파일의 고유 번호, 상대적 오류 주소 정보, 그리고 스택 정보를 상기 덤프 파일로 가공하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  4. 제2 항에 있어서,
    상기 크래시 리포트는 상기 덤프 파일로부터 시스템 정보, 모듈 정보, 스레드 정보, 예외 정보를 수집하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  5. 제4 항에 있어서,
    상기 시스템 정보는
    운영체제 종류, 운영체제의 버전, 프로세서의 레벨, 그리고 프로세서의 아키텍처 정보를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  6. 제4 항에 있어서,
    상기 모듈 정보는
    모듈의 이름, 모듈이 실제 메모리에 로드된 물리 주소 및 크기 정보, 그리고 해당 모듈의 고유 번호를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  7. 제4 항에 있어서,
    상기 스레드 정보는
    예외 상황이 발생한 스레드 ID와 백트레이스 방식의 콜 스택 정보를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  8. 제4 항에 있어서,
    상기 예외 정보는
    오류 발생 스레드 ID, 오류가 발생한 물리 메모리 주소, 그리고 오류의 종류 정보를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  9. 삭제
  10. 제1 항에 있어서,
    상기 분석 단계는
    프로그램의 데이터베이스를 기반으로 상기 상대적 가상 주소 라인을 맵핑하여 정보를 분석하는 단계를 포함하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  11. 제1 항에 있어서,
    상기 분석 단계는
    실행 환경에서 오류가 발생한 상기 프로그램의 타임 스탬프와
    개발 환경에서 저장된 적어도 하나 이상의 타임 스탬프를 매칭시켜 상기 실행 환경에서의 타임 스탬프와 상기 개발 환경에서의 타임 스탬프를 동일하게 하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  12. 제11 항에 있어서,
    상기 실행 환경 또는 상기 개발 환경의 실행 파일은 소스 코드의 가상 주소의 시작 주소 값, 소스 코드의 가상 주소의 끝 주소 값 그리고 오류가 발행한 주소 값을 구비하고,
    상기 분석 단계는
    상기 오류가 발생한 주소 값과 상기 가상 주소의 시작 주소 값의 차이를 이용하여 인터벌 주소 값을 산출하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
  13. 제12 항에 있어서,
    상기 분석 단계는
    산출된 상기 인터벌 주소 값을 이용하여 상기 오류의 위치를 특정하는 것을 특징으로 하는 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법.
KR1020180173011A 2018-12-28 2018-12-28 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법 KR102165747B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180173011A KR102165747B1 (ko) 2018-12-28 2018-12-28 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180173011A KR102165747B1 (ko) 2018-12-28 2018-12-28 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법

Publications (2)

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

Family

ID=71600551

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180173011A KR102165747B1 (ko) 2018-12-28 2018-12-28 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법

Country Status (1)

Country Link
KR (1) KR102165747B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312262A (zh) * 2021-03-23 2021-08-27 统信软件技术有限公司 一种程序调试方法、计算设备及储存介质
KR102566618B1 (ko) * 2022-12-07 2023-08-16 주식회사 파이랩테크놀로지 리눅스 취약점 식별을 위한 정보 수집 시스템 및 그 시스템의 동작 방법

Citations (3)

* 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
US20150317477A1 (en) 2014-04-30 2015-11-05 Parsons Corporation System For Automatically Collecting and Analyzing Crash Dumps
JP2017530464A (ja) 2014-09-12 2017-10-12 インテル コーポレイション システムオンチップ(SoC)及びシステムのための低電力デバッグアーキテクチャ

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021312B1 (en) * 2013-01-22 2015-04-28 Intuit Inc. Method and apparatus for visual pattern analysis to solve product crashes

Patent Citations (3)

* 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
US20150317477A1 (en) 2014-04-30 2015-11-05 Parsons Corporation System For Automatically Collecting and Analyzing Crash Dumps
JP2017530464A (ja) 2014-09-12 2017-10-12 インテル コーポレイション システムオンチップ(SoC)及びシステムのための低電力デバッグアーキテクチャ

Also Published As

Publication number Publication date
KR20200082422A (ko) 2020-07-08

Similar Documents

Publication Publication Date Title
US8839203B2 (en) Code coverage-based taint perimeter detection
US20150089297A1 (en) Using Crowd Experiences for Software Problem Determination and Resolution
US20210064512A1 (en) Selective memory tracing of program execution
US20050223357A1 (en) System and method for using an automated process to identify bugs in software source code
US20120030658A1 (en) Software development assistant method and system
CN111459495B (zh) 单元测试代码文件生成方法、电子装置及存储介质
US9645911B2 (en) System and method for debugging firmware/software by generating trace data
US10049031B2 (en) Correlation of violating change sets in regression testing of computer software
US20150006961A1 (en) Capturing trace information using annotated trace output
CN107220175B (zh) 应用程序死循环定位方法、装置、计算机设备和存储介质
CN103559123A (zh) 基于VxWorks操作系统的函数调用栈分析方法及装置
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
KR102165747B1 (ko) 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법
CN109614107B (zh) 一种软件开发工具包的集成方法和装置
Romano et al. An empirical study of bugs in webassembly compilers
US9563541B2 (en) Software defect detection identifying location of diverging paths
CN111597069A (zh) 程序处理方法、装置、电子设备和存储介质
CN114816993A (zh) 一种全链路接口测试方法、系统、介质及电子设备
KR20140088963A (ko) 애플리케이션 개발을 위한 런타임 에러 테스팅 시스템 및 방법
CN116795726B (zh) 一种在线调试Linux内核的方法
CN110889116A (zh) 一种广告拦截方法、装置及电子设备
CN110096888B (zh) 一种加快验证及分析smm安全隐患的方法及系统
JP4763743B2 (ja) プログラム動作比較装置及び方法及びプログラム
KR20190020363A (ko) 동적 분석과 정적 분석을 연계한 프로그램을 분석하기 위한 방법 및 장치
CN113467815A (zh) 热更新的应用修复方法、装置、终端设备及存储介质

Legal Events

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