KR20060046281A - 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법,시스템 및 장치 - Google Patents

컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법,시스템 및 장치 Download PDF

Info

Publication number
KR20060046281A
KR20060046281A KR1020050045667A KR20050045667A KR20060046281A KR 20060046281 A KR20060046281 A KR 20060046281A KR 1020050045667 A KR1020050045667 A KR 1020050045667A KR 20050045667 A KR20050045667 A KR 20050045667A KR 20060046281 A KR20060046281 A KR 20060046281A
Authority
KR
South Korea
Prior art keywords
timer
computer program
assert
execution
response
Prior art date
Application number
KR1020050045667A
Other languages
English (en)
Inventor
벤자민 이. 캐닝
크리스토퍼 씨. 화이트
토마스 에스. 쿤
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060046281A publication Critical patent/KR20060046281A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • G06F11/277Tester hardware, i.e. output processing circuits with comparison between actual response and known fault-free response
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0748Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a remote unit communicating with a single-box computer node experiencing an error/fault
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Landscapes

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

Abstract

컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법, 시스템 및 장치가 제공된다. 상기 방법에 따르면, 잠재적으로 미응답 반응으로 나타날 수 있는 프로그램 코드가 타어머에 랩핑된다. 타이머는 프로그램 코드 섹션의 실행 시작시 백그라운드 스레드 상에서 시작된다. 타이머는 지정된 임계 시간이 만료된 후 만료되도록 설정된다. 프로그램 코드 섹션의 실행 동안에 타이머가 만료하는지 여부에 관한 결정이 수행된다. 타이머가 프로그램 코드 섹션의 실행 동안에 만료하면, 실행이 중단되어 프로그램 코드 섹션이 미응답으로 식별되고, 컴퓨터 프로그램을 진단하고 미응답 반응을 치유하는데 이용하기 위한 시스템 상태 정보가 저장된다. 저장된 실제 시스템 상태 정보는 원격 제어 파일에 의해 식별되고, 타이머가 만료하는 시각에 또는 그 가까운 시각에 저장된다.
컴퓨터 프로그램, 미응답 식별, 디버그, 소프트웨어, 프로그램 에러

Description

컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법, 시스템 및 장치{METHOD, SYSTEM, AND APPARATUS FOR IDENTIFYING UNRESPONSIVE PORTIONS OF A COMPUTER PROGRAM}
도 1은 본 발명의 다양한 양태들을 실시하는데 활용되는 컴퓨터 네트워크의 양태를 예시한 네트워크 도면.
도 2는 본 발명의 다양한 실시예들에 의해 이용되고 제공되는 컴퓨터 시스템을 예시하는 컴퓨터 시스템 아키텍쳐 도면.
도 3은 본 발명의 실시예에 따른 컴퓨터 프로그램의 다양한 섹션에 어서트 타이머를 부가하기 위한 프로세스를 예시하는 프로그램 코드 도면.
도 4 및 도 5는 컴퓨터 프로그램의 미응답 부분을 식별하기 위해 본 발명의 다양한 실시예에 의해 제공되고 이에 활용되는 프로세스를 예시하는 흐름도.
<도면의 주요 부호에 대한 간단한 설명>
40 : 프로그램 코드의 섹션
44 : 프로그램 코드 섹션
48A : 어서트 타이머 구성기
50A : 어서트 타이머 파기기
소프트웨어 개발 사이클에서 가장 중요한 단계들 중 하나는 소프트웨어 제품이 고객에게 이동된 후에 발생하는 디버깅 단계이다. 소프트웨어 제품 사용자의 실제 경험이 이러한 단계 동안에 활용되어 프로그램 에러를 식별하고, 빈번하거나 빈번하지 않게 이용되는 특징을 식별하며, 일반적으로 소프트웨어 제품을 더 낫고 더 안정적으로 만들기 때문에 이러한 단계가 중요하다.
배포 후 디버깅 단계에서의 분석의 주 초점은 가장 자주 발생하는 프로그램 에러("버그"로도 지칭됨)를 식별하는 것이다. 가장 자주 발생하는 버그를 식별하고 이들을 수정함으로써, 다수 사용자의 가용성 경험이 개선될 수 있다. 그러나, 이전의 배포 후 디버깅 시스템에 의해 일반적으로 대처될 수 없는 다른 분석 카테고리가 있다. 이러한 카테고리는 컴퓨터 "행(hang)"을 식별하는 것과 관련된다. 행(hang)은 소프트웨어가 사용자 입력에 응답하는 것을 중지하고 표시 스크린을 다시 그리기를 중지하는 기간이다.
행된(hung) 컴퓨터 프로그램이 계속해서 실행할 지라도, 어떤 입력도 수신되지 않고 디스플레이가 업데이트되지 않으므로, 프로그램은 통상 사용자에게 완전하게 미응답된다. 프로그램이 복구될 수 없는 치명적 에러를 만났는지 여부 또는 프로그램이 그 처리를 완료하고 다시 입력을 수신하여 표시 스크린을 업데이트하는지 여부에 관해서는 사용자에게 불명료할 수 있기 때문에, 이것은 사용자에게 크게 좌절감을 일으킬 수 있다. 미응답 기간이 연장되는 경우, 사용자는 컴퓨터가 치명적 인 에러를 만났다고 믿고 프로그램을 종료하도록 선택할 수 있다. 행된(hung) 프로그램을 이와 같이 종료하는 것은 결국 데이터 손실 및 불안정한 시스템 상태로 나타나게 된다.
미응답 반응을 유발하고 있는 컴퓨터 프로그램의 부분이 식별될 수 있다면, 다수의 단계들 중 임의의 하나가 취해져 프로그램 코드의 응답성을 개선할 수 있다. 예를 들어, 미응답 부분이 재기록되어 그 처리를 비동기적으로 또는 백그라운드 처리 스레드 상에서 수행할 수 있다. 다르게는, 미응답성이 프로그램의 메인 메시지 루프에서 처리를 수행함으로써 야기되고 있다면, 처리는 메시지 루프 외부로 이동될 수 있다. 일단 미응답 반응을 유발하는 컴퓨터 프로그램의 부분이 식별되었다면, 다른 타입의 프로그램 변경이 수행되어 컴퓨터 프로그램의 응답성을 개선할 수 있다. 따라서, 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법, 시스템 및 장치가 필요하다. 그러한 성능 문제점들이 실제 사용자에 의해 대면될 때 이를 모니터링하고 어플리케이션 성능 또는 사용자 경험을 저하하지 않는 방식으로 이를 수행하는 것이 필요하다.
본 발명의 다양한 실시예들이 만들어진 것은 이들 및 다른 고려사항들에 관련된다.
본 발명의 실시예에 따르면, 상기 및 다른 문제들은 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법 및 장치에 의해 해결된다. 컴퓨터 프로그램의 미응 답 부분을 식별함으로써, 결과적으로 더 적은 미응답 프로그램 상태가 되고 그럼으로써 컴퓨터 프로그램과의 고객 만족을 증가시키는 프로그램에 대한 변경이 수행될 수 있다.
본 발명의 일 양태에 따르면, 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법, 시스템 및 장치가 제공된다. 상기 방법에 따르면, 잠재적으로 미응답 반응으로 나타날 수 있는 프로그램 코드가 타이머에 랩핑된다. 특히, 타이머는 프로그램 코드의 섹션의 실행 시작시 개시된다. 타이머는 지정된 임계 시간이 만료된 후 만료되도록 설정된다. 프로그램 코드 섹션의 실행 동안에 만료하는 경우에 타이머에 의해 호출되는 백그라운드 스레드가 실행된다.
타이머가 프로그램 코드 섹션의 실행 동안에 만료하면, 실행이 중단되고 이벤트에 관한 데이터가 수집된다. 특히, 프로그램 코드 섹션은 미응답으로 식별되고, 컴퓨터 프로그램을 진단하고 미응답 반응을 치유하는데 이용하기 위한 시스템 상태 정보가 저장된다. 타이머가 만료된 경우에 시스템 상태를 캡쳐하기 위해, 프로그램 섹션이 실행을 완료하는 시각과는 반대로, 시스템 상태 정보는 타이머가 만료된 시각에 또는 그 가까운 시각에 저장될 수 있다. 소량의 데이터가 자주 수집될 수 있고, 특정 성능 문제점이 추가 조사를 필요로 하는 경우에 더 많은 정보가 모아질 수 있다.
본 발명의 하나의 양태에 따르면, 타이머 만료가 프로그램 코드 섹션의 실패에 의해 실제로 유발되어 다른 이유와는 반대로 임계 시간내에 실행을 완료하도록 보장하는 처리가 수행될 수 있다. 예를 들어, 프로그램 코드의 섹션이 메인 메모 리로부터 백킹 스토어(backing store)에 스왑(swap)되는 경우, 프로그램 코드 섹션이 임계 시간동안 실행되지 않더라도 타이머가 만료할 수 있다. 마찬가지로, 모달(modal) 다이얼로그 박스의 존재는 코드의 섹션이 실행되지 않고 타이머가 만료하도록 한다. 이러한 상황들이 타이머 만료를 유발하는 것을 방지하기 위해, 컴퓨터 프로그램을 실행하는데 실제 소비된 시간의 양이 타이머와 연관된 임계값보다 작은지의 여부에 관한 결정이 수행된다. 실행시간이 임계값보다 작다면, 타이머는 "임계값과 동일한 시간의 양 - 프로그램 코드 섹션을 실행하는데 실제로 소비된 시간의 양"으로 리셋된다. 그런 다음, 프로그램 코드 섹션의 실행이 재개된다.
본 발명의 다른 양태에 따르면, 타이머는 프로그램 코드 섹션에 네스팅된 형태로 삽입된다. 이와 같이, 타이머는 부모 또는 자식 타이머를 가질 수 있다. 하나의 타이머의 만료가 그 부모 또는 자식 타이머의 만료를 유발하는 것을 방지하기 위해, 하나의 실시예에서, 각 타이머는 부모 또는 자식 타이머의 잘못된 만료를 유발하지 않도록 하기 위해 그 부모 또는 자식 타이머에게 만료된 시간을 통지하도록 동작될 수 있다. 더 구체적으로는, 자식 타이머는 자식에 의해 소요된 시간의 양을 부모 타이머에게 통지하여, 부모 타이머는 부모에 의해 소요되는 전체 시간의 양에서 상기 시간을 뺄 수 있도록 할 수 있다. 예를 들어, 부모 타이머가 처리하는데 5초가 걸리는 하나의 자식을 가지고 있고 부모가 전체 10초가 걸린다면, 2번의 경보가 발생될 것이다. 하나의 경보는 자식 타이머에 대해 5초에 생성된다. 부모가 자식에 의해 걸린 시간을 뺀 후에도 여전히 5초가 걸리므로, 부모에 대해 다른 경보가 생성될 것이다. 역으로, 부모 타이머가 단지 전체 5.5초만이 걸린다 면, 경보는 부모 타이어에 대해서가 아니라 자식 타이머에 대해서만 생성될 것이다(1초 타이머 임계값이라고 가정함).
본 발명의 다른 실시예에 따르면, 제한된 개수의 타이머를 할당하도록 동작하는 타이머 풀(timer pool)이 활용된다. 충분한 레벨의 성능을 유지하기 위해, 타이머 풀은 타이머를 할당하라는 요구에 응답하고, 타이머가 풀에 존재하는 경우에만 타이머의 할당을 허용한다. 타이머가 풀에서 가용하지 않다면, 어떠한 타이머도 할당되지 않을 것이다. 타이머의 사용이 완료된 경우, 타이머는 풀로 리턴될 수 있다.
본 발명을 특징짓는 장점들뿐만 아니라, 이들 및 다양한 다른 특징들은 이하의 상세한 설명을 읽고 연관된 도면을 검토하면 명백하게 될 것이다.
이제, 유사한 참조부호는 유사한 구성요소를 나타내는 도면들을 참조하여, 본 발명의 다양한 양태들이 설명된다. 특히, 도 1 및 대응하는 설명은 본 발명의 실시예들이 구현될 수 있는 적절한 컴퓨팅 환경의 간단하고 일반적인 설명을 제공하려는 것이다. 본 발명이 퍼스널 컴퓨터 상의 오퍼레이팅 시스템 상에서 운용되는 프로그램 모듈과 조합하여 실행하는 프로그램 모듈의 일반적인 컨텍스트로 기재되지만, 본 기술분야의 숙련자라면, 본 발명이 다른 타입의 컴퓨터 시스템 및 프로그램 모듈과 조합하여 구현될 수 있다는 것을 잘 알고 있을 것이다.
일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상적인 데이터 타입을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 및 다른 타입의 구조를 포함한다. 더구나, 본 기술분야의 숙련자라면, 본 발명은 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 가전 제품, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 잘 알고 있을 것이다. 본 발명은 태스크들이 통신 네트워크를 통해 링크되는 원격 처리 디바이스에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 디바이스 모두에 위치될 수 있다. 이제, 유사한 참조부호는 수개의 도면에서 유사한 구성요소를 나타내는 도면을 참조하여, 본 발명의 양태 및 오퍼레이팅 환경의 예가 설명된다.
도 1은 본 발명의 다양한 실시예를 위한 예시적인 오퍼레이팅 환경을 도시하고 있다. 도 1에 도시된 바와 같이, 클라이언트 컴퓨터(2)는 본 발명의 다양한 실시예에 활용된다. 클라이언트 컴퓨터는 하나 이상의 프로그램 모듈을 실행하는데 이용될 수 있는 표준 데스크탑 또는 서버 컴퓨터를 포함한다. 클라이언트 컴퓨터(2)는 또한 클라이언트 컴퓨터(2) 상에서 실행되는 어플리케이션 프로그램의 성능을 모니터링하고 어플리케이션 프로그램의 응답성을 결정하기 위한 프로그램 모듈을 구비하고 있다. 이하에 더 상세하게 설명되는 바와 같이, 클라이언트 컴퓨터(2)는 어플리케이션 프로그램이 미응답하게 되도록 유발하는 어플리케이션 코드의 부분을 식별하기 위한 코드를 실행하도록 동작한다. 미응답 컴퓨터 프로그램은 사용자 입력을 수신하지 않거나 처리를 수행하고 있는 동안에 표시 스크린을 업데이트하지 않는 프로그램을 포함한다.
미응답하는 프로그램을 식별하고 미응답 반응을 치유하기 위해, 클라이언트 컴퓨터(2)는 에러 리포팅 서버(error reporting server:ERS) 컴퓨터(10)와 인터페이싱할 수 있다. 에러 리포팅 서버 컴퓨터(10)는 LAN(4) 또는 인터넷(8)을 통해 유지되고 액세스가능한 종래 서버 컴퓨터를 포함한다. ERS(10)는 응답성에 대해 모니터링되는 어플리케이션 소프트웨어의 개발자에 의해 통상 동작된다. 클라이언트 컴퓨터(2)는 프로그램이 미응답 프로그램 코드를 포함한 것으로 식별되었거나 다른 타입의 에러 조건이 발견되었을 때 ERS(10)에 보고하도록 동작된다. ERS(10)에 보고된 정보를 통해, 개발자는 프로그램 코드를 변경하여 미응답 프로그램 상태를 제거하거나 다른 프로그램 결점을 정정할 수 있다. 변경된 프로그램 코드는 장래 업데이트시에 최종 사용자에게 송신될 수 있다.
미응답하는 프로그램 코드의 식별을 돕기 위해, 클라이언트 컴퓨터(2)는 주기적으로 ERS(10)로부터 원격 제어 파일을 수신할 수 있다. 원격 제어 파일은 고장이 기록되어야 하는 조건을 정의하는 정보를 포함한다. 특히, 원격 제어 파일은 프로그램이 미응답인지 여부를 결정하기 위한 시간 임계값을 포함한다. 원격 제어 파일은 프로그램의 일부가 미응답인 것으로 식별된 경우에 시스템 정보가 수집되어야 하는지 여부 및 수집되어야 하는 정보의 타입에 관한 정보를 포함할 수도 있다. 원격 제어 파일의 내용 및 이용에 관한 추가 세부사항은 이하에 제공될 것이다.
이제, 도 2를 참조하면, 클라이언트 컴퓨터(2)에 대한 예시적인 컴퓨터 아키텍쳐가 설명된다. 도 2에 도시된 컴퓨터 아키텍쳐는 중앙 처리 유닛(5, CPU), 랜덤 액세스 메모리(9, RAM) 및 판독 전용 메모리(11, ROM)를 포함하는 시스템 메모리(7), 및 메모리를 CPU(5)에 결합시키는 시스템 버스(12)를 포함하는 종래 데스크 탑 또는 랩탑 컴퓨터를 예시하고 있다. 시동동안과 같이, 컴퓨터내의 요소들간에 정보를 전달하는 것을 도와주는 기본 루틴을 포함하는 기본 입/출력 시스템은 ROM(11)에 저장된다. 컴퓨터(2)는 이하에 더 상세하게 설명되는 오퍼레이팅 시스템(16), 어플리케이션 프로그램(18), 및 다른 프로그램 모듈을 저장하기 위한 대량 저장 디바이스(14)를 더 포함한다.
대량 저장 디바이스(14)는 버스(12)에 접속된 대량 저장 컨트롤러(도시되지 않음)를 통해 CPU(5)에 접속된다. 대량 저장 디바이스(14) 및 그 연관된 컴퓨터 판독가능한 매체는 컴퓨터(2)에 대한 불휘발성 저장을 제공한다. 여기에 포함된 컴퓨터 판독가능한 매체의 기재는 하드 디스크 또는 CD-ROM 드라이브와 같은 대량 저장 디바이스를 지칭하지만, 본 기술분야의 숙련자라면, 컴퓨터 판독가능한 매체는 컴퓨터(2)에 의해 액세스될 수 있는 임의의 가용한 매체가 될 수 있다는 것을 잘 알고 있을 것이다.
예를 들어, 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되지 않는다. 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 불휘발성, 제거가능 및 제거불가능 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 고체상태 메모리 기술, CD-ROM, DVD 또는 다른 광 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스, 또는 원하는 정보를 저장하는데 이용될 수 있고 컴퓨터(2)에 의해 액세스될 수 있는 임의의 다른 매체 를 포함하나, 이들로 제한되지 않는다.
본 발명의 다양한 실시예에 따르면, 컴퓨터(2)는 인터넷과 같은 네트워크(8)를 통해 원격 컴퓨터로의 논리적 접속을 이용하여 네트워킹된 환경에서 동작할 수 있다. 클라이언트 컴퓨터(2)는 버스(12)에 접속된 네트워크 인터페이스 유닛(20)을 통해 네트워크(8)에 접속된다. 네트워크 인터페이스 유닛(20)은 다른 타입의 네트워크 및 원격 컴퓨터 시스템에 접속하는데 활용될 수 있다는 것은 자명하다. 컴퓨터(2)는 키보드, 마우스, 또는 전자 스타일러스(도 1에 도시되지 않음)와 같은 다수의 다른 디바이스로부터의 입력을 수신하고 처리하기 위한 입/출력 컨트롤러(22)를 포함한다. 마찬가지로, 입/출력 컨트롤러(22)는 표시 스크린, 프린터, 다른 타입의 출력 디바이스에 출력을 제공한다.
상기 간단하게 언급된 바와 같이, 워싱턴 레이몬드 마이크로소프트 사의 윈도우즈 XP 오퍼레이팅 시스템과 같이 네트워킹된 퍼스널 컴퓨터의 동작을 제어하는데 적합한 오퍼레이팅 시스템(16)을 포함한 다수의 프로그램 모듈 및 데이터 파일이 컴퓨터(2)의 대량 저장 디바이스(14) 및 RAM(9)에 저장된다. 대량 저장 디바이스(14) 및 RAM(9)은 하나 이상의 프로그램 모듈을 저장한다. 특히, 대량 저장 디바이스(14) 및 RAM(9)은 하나 이상의 어플리케이션 프로그램(18)을 저장할 수 있다. 또한, 대량 저장 디바이스(14) 및 RAM(9)은 어플리케이션 성능 모니터 어플리케이션 프로그램(24)을 저장할 수 있다. 여기에 더 상세하게 설명되는 바와 같이, 어플리케이션 성능 모니터(24)는 어플리케이션 프로그램의 동작을 모니터링하고 어플리케이션 프로그램의 부분들이 미응답인지 여부를 결정하도록 동작한다. 어플리 케이션 프로그램이 미응답인 경우, 어플리케이션 성능 모니터는 미응답 반응을 진단하고 치유하기 위한 시스템 상태 정보를 저장하도록 동작한다. 시스템 상태 정보는 어플리케이션 프로그램의 개발자에 의한 이용을 위해 ERS(10)에 송신될 수 있다.
대량 저장 디바이스(14) 및 RAM(9)은 또한 원격 제어 파일(26)을 저장할 수 있다. 원격 제어 파일(26)의 내용은 주기적으로 업데이트되어 ERS(10)로부터 클라이언트 컴퓨터(2)에 송신될 수 있다. 상기 간단하게 설명된 바와 같이, 원격 제어 파일(26)은 고장이 기록되어야 하는 조건을 정의하는 데이터를 저장할 수 있다. 특히, 원격 제어 파일은 프로그램이 미응답인지 여부를 결정하기 위한 시간 임계값을 포함할 수 있다. 원격 제어 파일은 또한 프로그램의 일부가 미응답인 것으로 식별된 경우에 시스템 정보가 수집되어야 하는지 여부에 관한 정보 및 수집되어야 하는 정보 타입을 포함할 수도 있다. 원격 제어 파일(26)은 다른 데이터를 저장하고 클라이언트 컴퓨터(2)의 동작을 추가적인 방식으로 제어하는데 활용될 수 있다는 것은 자명하다. 원격 제어 파일의 내용 및 사용에 관한 추가 정보는 참고로 여기에 포함되고, 발명의 명칭이 "Method and System for Remotely Controlling the Reporting of Events Occurring within a Computer System"인 동시 계류중인 미국특허출원 번호 제10/304,282호에 기재되어 있다. 어플리케이션 성능 모니터(24)의 동작에 관한 추가 세부사항은 도 3-5를 참조하여 이하에 제공된다.
이제, 도 3을 참조하면, 컴퓨터 프로그램의 다양한 섹션에 어서트 타이머를 부가하기 위한 프로세스를 예시하는 프로그램 코드 도면이 설명된다. 도 3에 도시 된 바와 같이, 컴퓨터 프로그램의 섹션(40)은 프로그램 코드의 다양한 섹션들을 포함한다. 예를 들어, 도 3에 도시된 바와 같이, 섹션(40)은 프로그램 코드 섹션(46A-46D)으로 구성된다. 이들 섹션들은 다양한 루틴, 서브루틴, 함수, 스레드, 프로세스, 또는 프로그램 코드의 임의의 섹션을 포함한다.
프로그램 코드의 다양한 섹션들의 응답성을 결정하기 위해, 타이머(여기에서는 "어서트 타이머"로도 지칭됨)를 생성하고 파기하기 위한 추가 프로그램 코드가 프로그램 코드에 삽입된다. 예를 들어, 도 3에 도시된 바와 같이, 어서트 타이머 구성기(48A)가 프로그램 코드에 삽입되었다. 구성기(48A)는 타이머를 생성하고 개시시킨다. 이하에 더 상세하게 설명되는 바와 같이, 백그라운드 프로세스는 타이머를 모니터링하고, 타이머와 연관된 임계 시간이 만료되었는지 여부를 결정한다. 프로그램 코드의 실행이 구성기(48A)와 연관된 어서트 타이머 파기기(50A)에 도달하기 전에 타이머가 만료되면, 백그라운드 스레드는 타이머의 만료를 캐치하여, 프로그램 코드가 타이머가 만료하기 이전에 실행을 종료하지 못한 이유를 결정하는데 도움을 주는 시스템 상태 정보를 수집할 수 있다. 프로그램 코드의 실행이 타이머가 만료하기 이전에 파기기(50A)에 도달하면, 파기기(50A)는 타이머를 해제한다.
도 3에 도시된 바와 같이, 타이머는 프로그램 코드의 섹션에 네스팅된 방식으로 삽입된다. 예를 들어, 도 3에 도시된 바와 같이, 제1 타이머는 구성기(48A) 및 파기기(50B)의 이용을 통해 프로그램 코드의 섹션(44)의 주위에 배치되었다. 제2 타이머는 구성기(48B) 및 파기기(50A)의 이용을 통해 섹션(42)의 주위에 배치되었다. 제1 타이머는 제2 타이머를 완전하게 포함하므로, 제1 타이머는 제2 타이 머의 "부모" 타이머로 간주될 수 있다. 마찬가지로, 제2 타이머는 제1 타이머의 "자식" 타이머로 간주될 수 있다. 이하에 더 상세하게 설명되는 바와 같이, 하나의 타이머의 만료가 그 부모 또는 자식 타이머의 만료를 유발하지 않도록 하기 위해, 각 타이머는 만료된 경우에 그 부모 또는 자식에게 통지하도록 동작할 수 있다. 만료된 타이머는 임계값을 넘어 소비된 시간의 양에 관한 표시를 제공할 수 있다. 그리고나서, 부모 또는 자식 타이머의 만료의 결과로서 잘못된 만료를 유발하지 않도록, 통지된 타이머는 그 임계값으로부터 시간의 양이 감산될 수 있다.
이제, 도 4를 참조하면, 컴퓨터 프로그램의 미응답 부분을 식별하기 위해 수행되는 프로세스를 예시하는 예시적 루틴(400)이 설명된다. 여기에 제공된 루틴의 설명을 읽을 때, 본 발명의 다양한 실시예들의 논리적 동작들이 (1) 컴퓨팅 시스템 상에서 운용되는 컴퓨터 구현된 액트 또는 프로그램 모듈의 시퀀스 및/또는 (2) 컴퓨팅 시스템내의 상호접속된 머신 로직 회로 또는 회로 모듈로서 구현된다는 것은 자명하다. 구현은 본 발명을 구현하는 컴퓨팅 시스템의 성능 요구조건에 따른 선택의 문제이다. 따라서, 도 4-5에 예시된 논리적 동작, 및 여기에 설명된 본 발명의 실시예를 구성하는 것은 오퍼레이션, 구조적 디바이스, 액트 또는 모듈로 다양하게 지칭된다. 본 기술분야의 숙련자라면, 이들 오퍼레이션, 구조적 디바이스, 액트 및 모듈은 이하의 특허청구범위에 인용된 본 발명의 사상과 범주에서 벗어나지 않고 소프트웨어, 펌웨어, 전용 디지털 로직, 및 임의의 그 조합으로 구현될 수 있다는 것을 잘 알고 있을 것이다.
루틴(400)은 오퍼레이션(420)에서 시작하여, 다수의 초기화 단계들이 수행된 다. 특히, 오퍼레이션(422)에서, 어서트 타이머 백그라운드 스레드가 생성된다. 어서트 백그라운드 스레드는 타이머의 만료를 캐치하고 타이머의 만료에 응답하여 특정 처리를 수행하도록 동작한다. 따라서, 어서트 타이머 백그라운드 스레드는 오퍼레이션(428)에서 초기화한 후, 오퍼레이션(430)에서 대기한다. 타이머가 만료되면, 어서트 타이머 백그라운드 스레드가 타이머의 만료가 처리되는 오퍼레이션(432)으로 계속된다. 타이머의 만료를 처리하기 위한 예시적 루틴(500)은 도 5와 관련하여 이하에 설명될 것이다. 오퍼레이션(434)으로부터, 어서트 타이머 백그라운드 스레드가 오퍼레이션(434)으로 이동하여 대기 루프가 종료된다.
어서트 타이머 풀(pool)이 또한 오퍼레이션(424)에서 초기화된다. 어서트 타이머 풀(28, "풀")은 호출중인 오브젝트에 제한된 개수의 타이머(30A-30H) 중 하나를 할당하도록 권한이 부여된 오브젝트를 포함한다. 타이머가 풀에서 가용하다면, 호출중인 오브젝트에 할당될 것이다. 타이머가 가용하지 않는다면, 하나도 할당되지 않을 것이다. 단지 제한된 개수의 타이머만을 할당함으로써, 다수의 타이머를 동시에 할당하는 가능한 성능 충격이 감소될 수 있다. 타어머의 구성시 타이머를 풀로부터 할당하고 타이머의 파기시 풀에 리턴한다는 것은 자명하다.
응답성에 대해 모니터링되고 있고 타이머로 코딩되어 있는 프로그램의 실행은 오퍼레이션(402-418)에 도시되어 있다. 특히, 오퍼레이션(402)에서, 어서트 타이머에 대한 구성기가 직면하여 실행된다. 타이머를 구성하기 위해, 수개의 파라미터가 전달될 수 있다. 특히, 특정 타이머를 고유하게 식별하는 어서트 태그 식별자가 전달될 수 있다. 타이머에 대해 수행된 타이밍 타입 및 타이머와 연관된 디폴트 임계 시간을 결정하는 타이머 타입 파라미터가 또한 전달될 수 있다. 특히, 프로세스 실행 시간에 대하여 타이밍하는 프로세스 타이밍이 특정될 수 있다. 또는, 호출중인 스레드의 실행 시간을 타이밍하는 스레드 타이밍이 특정될 수 있다.
일단 타이머가 구성되면, 루틴(400)은 오퍼레이션(404)을 계속하여, 리셋 타이머 메소드에 추가 호출이 수행되어 운용 어서트 타이머 오브젝트를 실제로 리턴한다. 운용 어서트 타이머 오브젝트는 원격 제어 파일(26)을 체크하여, 오퍼레이션(436)에서 다른 임계값이 활용되는지 여부를 결정한다. 실행 동안에, 파기기가 호출되어 처리되기 전에 임계 시간이 도달되면, 운용 어서트 타이머 오브젝트는 어서트 타이머 백그라운드 스레드를 경보로 호출하도록 동작한다. 이러한 프로세스는 오퍼레이션(440)에 도시되어 있다.
일단 타이머가 오퍼레이션(404)에서 운용하기를 시작하면, 루틴(400)은 오퍼레이션(406)으로 진행하여, 응답성에 대해 테스트될 프로그램 코드의 섹션이 실행된다. 오퍼레이션(406)에서 타이밍된 코드 부분의 실행의 완료 이전에 타이머가 만료되면, 타이머는 어서트 타이머 백그라운드 스레드를 호출하고 도 5와 관련하여 이하에 설명된 처리가 발생한다. 그렇지 않으면, 루틴(400)은 오퍼레이션(408)으로 진행하여, 파기기(32)가 처리된다. 특히, 오퍼레이션(408)에서, 타이머는 어서트 타이머 풀(28)로 다시 해제된다.
오퍼레이션(408)으로부터, 루틴(400)은 오퍼레이션(410)으로 진행하여, 타이머가 임계 시간이 도달되었다는 것을 나타내는 경보를 이미 파이어링(fire)했는지 여부에 관한 결정이 수행된다. 경보가 이미 파이어링되었다면, 루틴(400)은 오퍼레이션(416)으로 분기하여, 어서트가 디버그 모드로 파이어링된다. 이것은 통상 어플리케이션의 개발자에 대해서만 발생하여 조건이 발생되었다는 것이 통지된다.
오퍼레이션(410)에서, 경보가 파이어링되지 않은 것으로 결정되면, 루틴(400)은 오퍼레이션(412)으로 진행하여, 타이머가 만료되지 않았는지 여부에 관한 결정이 수행된다. 타이머가 만료되었다면, 루틴(400)은 오퍼레이션(418)으로 분기하여, 루틴이 종료되고 어플리케이션 프로그램의 실행이 계속된다. 오퍼레이션(412)에서, 타이머가 만료된 것으로 결정되면, 루틴(400)은 오퍼레이션(414)으로 진행하여, 어서트 타이머의 만료가 도 5와 관련하여 이하에 설명된 방식으로 처리된다. 이러한 조건은 예를 들어, 타이머가 만료되었지만 백그라운드 스레드가 아직 타이머의 만료를 처리할 기회를 가지지 않은 경우에 발생할 수 있다. 이 경우에, 파기기는 만료된 타이머를 핸들링하기 위해 도 5와 관련하여 이하에 설명된 프로세스를 개시한다. 오퍼레이션(414)으로부터, 루틴(400)은 오퍼레이션(416)으로 진행하여, 어서트가 상기 설명한 바와 같이 디버그 모드로 파이어링된다. 그리고나서, 루틴(400)은 오퍼레이션(418)으로 진행하여, 루틴이 종료하고 어플리케이션 프로그램의 실행이 계속된다.
이제, 도 5를 참조하면, 타이머의 만료를 처리하기 위한 예시적 루틴(500)이 설명된다. 루틴(500)은 오퍼레이션(502)에서 시작하여, 모니터링되고 있는 프로그램 섹션에 대한 실제 실행 타이머가 실제로 타이머와 관련된 임계값보다 작은지 여부에 관한 결정이 수행된다. 이러한 계산은 다른 이유와는 반대로, 임계 시간내에 실행을 완료하도록 프로그램 코드의 섹션의 실패에 의해 타이머 만료가 실제로 야기되는 것을 보장하도록 수행된다. 예를 들어, 프로그램 코드의 섹션이 메인 메모리로부터 백킹 스토어로 스왑되는 경우, 프로그램 코드의 섹션이 임계 시간동안 실행하지 않았을 지라도 타이머가 만료될 수 있다. 마찬가지로, 모달 다이얼로그 박스의 존재는 코드의 섹션이 실행되지 않고 타이머가 만료되도록 유발한다. 타이머 만료를 야기하는 이러한 상황들을 방지하기 위해, 오퍼레이션(502)에서, 컴퓨터 프로그램을 실행하는데 실제 소비된 시간의 양이 타이머와 관련된 임계값보다 작은 지 여부에 관한 결정이 수행된다. 추가적으로, 모달 다이얼로그 박스가 사용자에게 표시되고 입력을 대기하고 있는지 여부에 관한 결정이 수행될 수 있다. 모달 다이얼로그 박스가 제공되는 경우, 사용자가 다이얼로그 박스를 없애기 위해 대기하는데 소비된 시간은 실행 시간으로부터 감산될 수 있다. 이것은, 다이얼로그 박스가 코드 실행을 방지하지는 않을 지라도, 다이얼로그 박스가 표시되고 있는 동안, 어플리케이션은 사용자를 기다리고 있고 사용자를 기다리는 동안의 실행 시간은 무시된다는 사실 때문이다.
오퍼레이션(502)에서, 실행 시간이 임계값보다 크다고 결정되면, 루틴(500)은 오퍼레이션(504)으로 분기한다. 오퍼레이션(504)에서, 타이머와 관련된 파기기가 현재 실행되고 있는지 여부에 관한 결정이 수행된다. 파기기가 현재 실행되고 있다면, 루틴(500)은 오퍼레이션(520)으로 분기하여, 타이머가 풀(28)로 리턴된다. 파기기가 실행되고 있지 않은 경우, 루틴(500)은 오퍼레이션(506)으로 진행하여, 타이머에 대한 임계값이 "타이머의 임계값과 동일한 시간의 양 - 프로그램 코드 섹 션을 실행하는데 실제 소비되는 시간의 양"으로 리셋된다. 그리고나서, 프로그램 코드 섹션의 실행이 오퍼레이션(508)에서 재개된다.
오퍼레이션(502)에서, 실행 시간이 임계값보다 작다고 결정되면, 루틴(500)은 오퍼레이션(510)으로 분기하여, 미응답 상태를 유발하는 프로그램 코드의 진단에 도움을 주도록 메모리 덤프(dump)가 수집되어야 하는지의 여부에 관한 결정이 수행된다. 덤프가 수집되어야 할지 여부 및 그런 경우, 수집될 덤프의 타입이 원격 제어 파일(26)에 지정될 수 있다. 예를 들어, 다수의 경우에, 타이머가 만료될 때, 이벤트의 ID 및 매우 기본적인 시스템 정보와 같은 소량의 정보만을 수집하는 것이 바람직하다. 이것은 어떤 이벤트가 매우 빈번하게 발생하고 있는지에 대한 신속한 결정을 가능하게 한다. 이벤트가 추가 조사를 필요로 하는 경우, 원격 제어 파일(26)의 내용이 정의되어 특정 실패의 경우에 대한 전체 메모리 덤프가 수집되도록 유발할 수 있다. 이와 같이, 경량 및 중량 리포팅 사이에서의 전환이 매우 용이하다. 타이머는 임계 시간이 만료된 직후에 만료되므로, 덤프는 모니터링되고 있는 프로그램 코드의 섹션이 그 실행을 완료한 시간보다는 만료 시간이나 그 근처에서 수집된다는 것을 이해해야 한다.
덤프가 수집되지 않는다면, 루틴(500)은 오퍼레이션(512)으로부터 오퍼레이션(514)으로 분기한다. 덤프가 수집된다면, 루틴(500)은 오퍼레이션(512)으로 진행하여, 메모리 덤프가 수집된다. 그리고나서, 루틴(500)은 오퍼레이션(514)으로 진행하여, 원겨 제어 파일(26)의 내용을 업데이트하는데 이용되는 정보가 업데이트된다. 오퍼레이션(514)으로부터, 루틴은 오퍼레이션(516)으로 진행하여, 메모리 덤프가 수집되었다는 것을 나타내는 플래그가 설정된다.
오퍼레이션(516)으로부터, 루틴(500)은 오퍼레이션(518)으로 진행하여, 상기 설명된 방식으로 만료된 타이머의 부모 및 자식 타이머에 만료가 통지된다. 그리고나서, 루틴은 오퍼레이션(520)으로 진행하여, 타이머가 어서트 타이머 풀(28)로 리턴된다. 그리고나서, 루틴(500)은 오퍼레이션(522)으로 진행하여 종료한다.
상기 설명에 기초하여, 본 발명의 다양한 실시예들은 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법, 시스템, 장치 및 컴퓨터 판독가능 매체를 포함한다는 것을 이해해야 한다. 상기 명세서, 예들 및 데이터는 본 발명의 구성의 제조 및 이용의 완전한 설명을 제공한다. 본 발명의 다수의 실시예들이 본 발명의 사상 및 범주에서 벗어나지 않고 이루어질 수 있으므로, 본 발명은 이하에 첨부된 청구의범위 내에 있다.
본 발명에 의하면, 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법, 시스템 및 장치가 제공된다.

Claims (21)

  1. 컴퓨터 프로그램의 미응답 부분들을 식별하기 위한 방법으로서,
    상기 컴퓨터 프로그램 섹션의 실행을 시작할 때 타이머를 개시하는 단계;
    상기 컴퓨터 프로그램 섹션의 상기 실행 동안에 상기 타이머가 만료되는지를 결정하는 단계; 및
    상기 컴퓨터 프로그램 섹션의 상기 실행 동안에 상기 타이머가 만료하는 것에 응답하여, 상기 컴퓨터 프로그램 섹션을 미응답으로 식별하고 상기 컴퓨터 프로그램을 진단할 때 이용하기 위한 시스템 상태 정보를 저장하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 시스템 상태 정보는 상기 타이머가 만료되는 시각 또는 그에 가까운 시각에 저장되는 방법.
  3. 제2항에 있어서,
    상기 컴퓨터 프로그램 섹션을 미응답으로 식별하고 시스템 상태 정보를 저장하기 전에,
    상기 컴퓨터 프로그램 섹션을 실행하는데 소비되는 시간의 양이 상기 타이머와 관련된 임계값보다 작은 지의 여부를 결정하는 단계; 및
    상기 컴퓨터 프로그램 섹션을 실행하는데 소비되는 상기 시간의 양이 임계값보다 작다고 결정하는 것에 응답하여, "상기 임계값과 동일한 시간의 양 - 상기 컴퓨터 프로그램을 실행하는데 소비되는 시간의 양"의 만료 후에 상기 타이머가 만료되도록 리셋하는 단계
    를 더 포함하는 방법.
  4. 제2항에 있어서,
    상기 컴퓨터 프로그램 섹션을 미응답으로 식별하고 시스템 상태 정보를 저장하기 전에,
    상기 컴퓨터 프로그램 섹션의 상기 실행 동안에 모달 다이얼로그 박스(modal dialog box)가 표시되었는지의 여부를 결정하는 단계; 및
    모달 다이얼로그 박스가 표시되었다고 결정하는 것에 응답하여, "상기 임계값과 동일한 시간의 양 - 상기 모달 다이얼로그 박스가 표시된 시간의 양"의 만료 이후에 상기 타이머를 만료하도록 리셋하는 단계
    를 더 포함하는 방법.
  5. 제2항에 있어서,
    상기 타이머는 하나 이상의 부모 타이머를 가지고 있고, 상기 방법은 상기 타이머가 상기 컴퓨터 프로그램 섹션의 상기 실행 동안에 만료되었다고 결정하는 것에 응답하여 상기 부모 타이머들에게 상기 만료를 통지하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 타이머는 하나 이상의 자식 타이머를 가지고 있고, 상기 방법은 상기 타이머가 상기 컴퓨터 프로그램 섹션의 상기 실행 동안에 만료되었다고 결정하는 것에 응답하여 상기 자식 타이머들에게 상기 만료를 통지하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서,
    할당되어 있는 제한된 개수의 타이머들에게 허가된 타이머 풀(timer pool)로부터 상기 타이머를 획득하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 컴퓨터 프로그램을 진단하는데 이용하기 위해 저장된 상기 시스템 상태 정보는 원격 제어 파일의 내용에 기초하는 방법.
  9. 제8항에 있어서,
    상기 원격 제어 파일은 최소 데이터 수집 또는 풀 메모리 덤프(full memory dump)가 수행되어야 하는지의 여부를 정의하는 방법.
  10. 컴퓨터 프로그램의 미응답 부분들을 식별하기 위한 방법으로서,
    어서트 타이머 구성기(assert timer constructor)를 응답성(responsiveness)에 대해 테스트될 상기 컴퓨터 프로그램의 일부 이전에 삽입하는 단계;
    어서트 타이머 파기기(assert timer destructor)를 응답성에 대해 테스트될 상기 컴퓨터 프로그램의 상기 일부 이후에 삽입하는 단계;
    타이머를 획득하도록 상기 구성기를 실행시키는 단계;
    상기 타이머를 인스턴스화하는(instantiating) 단계;
    응답성에 대해 테스트될 상기 컴퓨터 프로그램의 상기 일부의 상기 실행을 시작하는 단계;
    상기 컴퓨터 프로그램의 상기 일부의 상기 실행의 완료 이전에 상기 타이머가 만료되었는지의 여부를 결정하는 단계;
    상기 타이머를 해제하도록 상기 파기기를 실행시키는 단계; 및
    상기 컴퓨터 프로그램의 상기 일부의 상기 실행의 완료 이전에 상기 타이머가 만료되었다고 결정하는 것에 응답하여, 상기 컴퓨터 프로그램의 섹션을 미응답으로 식별하고 상기 컴퓨터 프로그램을 진단하는데 이용하기 위한 시스템 상태 정보를 저장하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 시스템 상태 정보는 상기 타이머가 만료되는 시각 또는 그에 가까운 시 각에 저장되는 방법.
  12. 제10항에 있어서,
    상기 타이머가 만료되지 않았다고 결정하는 것에 응답하여, 상기 타이머를 해제하도록 상기 파기기를 실행시키고 상기 컴퓨터 프로그램의 실행을 계속하는 단계를 더 포함하는 방법.
  13. 제10항에 있어서,
    상기 타이머를 획득하도록 상기 구성기를 실행시키기에 앞서서, 할당되어 있는 제한된 개수의 타이머들에게 허가된 타이머 풀을 초기화하는 단계, 및 상기 풀로부터 할당된 타이머들이 만료되었는지의 여부를 모니터링하고 타이머들이 만료되었다고 결정하는 것에 응답하여 만료 루틴을 호출하기 위한 어서트 타이머 스레드(assert timer thread)를 개시하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 타이머를 획득하는 단계는 상기 이벤트 타이머 풀로부터 타이머를 획득하는 단계를 포함하는 방법.
  15. 제14항에 있어서,
    상기 컴퓨터 프로그램 섹션을 미응답으로 식별하고 시스템 상태 정보를 저장 하기 전에,
    상기 컴퓨터 프로그램의 섹션을 실행하는데 소비되는 시간의 양이 상기 타이머와 관련된 임계값보다 작은지의 여부를 결정하는 단계; 및
    상기 컴퓨터 프로그램 섹션을 실행하는데 소비되는 상기 시간의 양이 임계값보다 작다고 결정하는 것에 응답하여, "상기 임계값과 동일한 시간의 양 - 상기 컴퓨터 프로그램을 실행하는데 소비되는 시간의 양"의 만료 이후에 상기 타이머가 만료되도록 리셋하는 단계
    를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 타이머는 하나 이상의 부모 백그라운드 타이머들을 가지고 있고, 상기 방법은 상기 타이머가 상기 컴퓨터 프로그램 섹션의 상기 실행 동안에 만료되었다고 결정하는 것에 응답하여 상기 부모 타이머들에게 상기 만료를 통지하는 단계를 더 포함하는 방법.
  17. 제16항에 있어서,
    상기 타이머는 하나 이상의 자식 타이머들을 가지고 있고, 상기 방법은 상기 타이머가 상기 컴퓨터 프로그램 섹션의 상기 실행 동안에 만료되었다고 결정하는 것에 응답하여 상기 자식 타이머들에게 상기 만료를 통지하는 단계를 더 포함하는 방법.
  18. 컴퓨터 실행가능한 명령어들이 저장되는 컴퓨터 판독가능한 매체로서, 상기 컴퓨터 실행가능한 명령어들은, 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금,
    제한된 개수의 대기가능한 타이머들을 할당하도록 동작하는 어서트 타이머 풀을 초기화화고,
    하나 이상의 어서트 타이머들의 동작을 백그라운드 스레드 상에서 모니터링하고 어서트 타이머가 만료된 것으로 결정하는 것에 응답하여 어서트 타이머 만료 루틴을 호출하도록 동작하는 어서트 타이머 스레드를 초기화하고,
    상기 어서트 타이머 풀로부터 어서트 타이머를 획득하는 어서트 타이머 구성기를 호출하고 상기 어서트 타이머의 실행을 시작하도록 상기 어서트 타이머를 리셋하고,
    상기 컴퓨터 프로그램 내의 프로그램 코드를 실행하고,
    상기 어서트 타이머 스레드에 의해, 상기 어서트 타이머가 상기 프로그램 코드의 상기 실행 동안에 만료되었는지의 여부를 결정하고,
    상기 어서트 타이머가 상기 프로그램 코드의 상기 실행 동안에 만료되었다고 결정하는 것에 응답하여 상기 어서트 타이머 만료 루틴을 호출하게 하는 컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 어서트 타이머 만료 루틴의 실행은,
    상기 프로그램 코드를 실행하는데 소비되는 시간의 양이 상기 어서트 타이머와 관련된 임계값보다 작은지의 여부를 결정하는 단계; 및
    상기 프로그램 코드를 실행하는데 소비되는 상기 시간의 양이 임계값보다 작다고 결정하는 것에 응답하여, "상기 임계값과 동일한 시간의 양 - 상기 프로그램 코드를 실행하는데 소비되는 시간의 양"의 만료 이후에 상기 어서트 타이머가 만료되도록 리셋하는 단계
    를 포함하는 컴퓨터 판독가능한 매체.
  20. 제19항에 있어서,
    상기 어서트 타이머 만료 루틴의 실행은,
    상기 프로그램 코드를 실행하는데 소비되는 상기 시간의 양이 임계값보다 작지 않다고 결정하는 것에 응답하여, 상기 프로그램 코드를 미응답으로 식별하고 상기 컴퓨터 프로그램을 진단하는데 이용하기 위한 시스템 상태 정보를 저장하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  21. 제20항에 있어서,
    상기 어서트 타이머 만료 루틴의 실행은 상기 할당된 어서트 타이머를 상기 어서트 타이머 풀에 리턴시키는 단계를 더 포함하는 컴퓨터 판독가능 매체.
KR1020050045667A 2004-09-30 2005-05-30 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법,시스템 및 장치 KR20060046281A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/955,365 2004-09-30
US10/955,365 US7383470B2 (en) 2004-09-30 2004-09-30 Method, system, and apparatus for identifying unresponsive portions of a computer program

Publications (1)

Publication Number Publication Date
KR20060046281A true KR20060046281A (ko) 2006-05-17

Family

ID=35840052

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050045667A KR20060046281A (ko) 2004-09-30 2005-05-30 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법,시스템 및 장치

Country Status (5)

Country Link
US (1) US7383470B2 (ko)
EP (1) EP1650661A3 (ko)
JP (1) JP2006107430A (ko)
KR (1) KR20060046281A (ko)
CN (1) CN100481021C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8842555B2 (en) 2005-10-21 2014-09-23 Qualcomm Incorporated Methods and systems for adaptive encoding of real-time information in packet-switched wireless communication systems

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7640412B2 (en) * 2007-01-04 2009-12-29 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for improving the reliability of file systems
US7979674B2 (en) * 2007-05-16 2011-07-12 International Business Machines Corporation Re-executing launcher program upon termination of launched programs in MIMD mode booted SIMD partitions
US8015180B2 (en) * 2007-05-18 2011-09-06 Oracle International Corp. Queries with hard time constraints
US7814295B2 (en) * 2007-05-18 2010-10-12 International Business Machines Corporation Moving processing operations from one MIMD booted SIMD partition to another to enlarge a SIMD partition
US7953728B2 (en) * 2007-05-18 2011-05-31 Oracle International Corp. Queries with soft time constraints
US7831803B2 (en) * 2007-07-19 2010-11-09 International Business Machines Corporation Executing multiple instructions multiple date (‘MIMD’) programs on a single instruction multiple data (‘SIMD’) machine
US8166464B2 (en) * 2008-06-27 2012-04-24 Microsoft Corporation Analysis and detection of soft hang responsiveness program errors
JP5335552B2 (ja) * 2009-05-14 2013-11-06 キヤノン株式会社 情報処理装置、その制御方法、及びコンピュータプログラム
KR101674934B1 (ko) * 2009-07-07 2016-11-10 엘지전자 주식회사 오류 보고 방법 및 장치
EP2585957A4 (en) * 2010-06-24 2014-12-24 Valtion Teknillinen STATE DEDUCTION IN A HETEROGENEOUS SYSTEM
US8639991B2 (en) * 2010-12-17 2014-01-28 Sap Ag Optimizing performance of an application
US8549360B2 (en) * 2011-01-07 2013-10-01 International Business Machines Corporation Early collection of diagnostic information
US9389936B2 (en) 2011-09-23 2016-07-12 Microsoft Technology Licensing, Llc. Monitoring the responsiveness of a user interface
KR101338150B1 (ko) * 2011-11-14 2013-12-06 (주)네오위즈게임즈 프로그램의 비정상적 종료에 대한 데이터 제공 및 수집 방법과 그 장치
CN103135518B (zh) * 2011-12-02 2019-11-12 费希尔控制国际公司 程序流控制监控例程、与之相关的方法以及***
JP6035909B2 (ja) * 2012-06-29 2016-11-30 富士通株式会社 ストレージシステムおよびストレージシステムの制御方法
US9910684B2 (en) * 2013-03-25 2018-03-06 Hewlett Packard Enterprise Development Lp Extensible firmware abstraction
CN103150226A (zh) * 2013-04-01 2013-06-12 山东鲁能软件技术有限公司 计算机模型异常转储与恢复***及其转储与恢复方法
US9703552B2 (en) 2014-12-18 2017-07-11 International Business Machines Corporation Assertions based on recently changed code
US9823904B2 (en) 2014-12-18 2017-11-21 International Business Machines Corporation Managed assertions in an integrated development environment
US9747082B2 (en) * 2014-12-18 2017-08-29 International Business Machines Corporation Optimizing program performance with assertion management
US9678855B2 (en) 2014-12-30 2017-06-13 International Business Machines Corporation Managing assertions while compiling and debugging source code
US10798146B2 (en) * 2015-07-01 2020-10-06 Oracle International Corporation System and method for universal timeout in a distributed computing environment
US10719427B1 (en) * 2017-05-04 2020-07-21 Amazon Technologies, Inc. Contributed test management in deployment pipelines
CN108363580A (zh) * 2018-03-12 2018-08-03 平安普惠企业管理有限公司 应用程序安装方法、装置、计算机设备和存储介质
US11138198B2 (en) * 2018-10-19 2021-10-05 Oracle International Corporation Handling of unresponsive read only instances in a reader farm system
CN115017004B (zh) * 2021-12-27 2023-07-07 荣耀终端有限公司 进程监控方法及电子设备

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58192152A (ja) * 1982-05-07 1983-11-09 Hitachi Ltd プロセスの終了監視方式
JPS6133552A (ja) * 1984-07-25 1986-02-17 Nec Corp 情報処理装置
JPH0271338A (ja) * 1988-09-07 1990-03-09 Nec Corp 情報処理装置
JPH0395634A (ja) * 1989-09-08 1991-04-22 Oki Electric Ind Co Ltd 計算機システム再起動制御方式
JPH03246638A (ja) * 1990-02-23 1991-11-05 Fujitsu Ltd プログラム暴走検出方式
US5341497A (en) * 1991-10-16 1994-08-23 Ohmeda Inc. Method and apparatus for a computer system to detect program faults and permit recovery from such faults
JPH05108418A (ja) * 1991-10-21 1993-04-30 Toshiba Corp プログラム異常検出方式
DE69418916T2 (de) * 1993-02-26 2000-03-23 Denso Corp Multitaskingverarbeitungseinheit
US5485574A (en) * 1993-11-04 1996-01-16 Microsoft Corporation Operating system based performance monitoring of programs
US5590277A (en) * 1994-06-22 1996-12-31 Lucent Technologies Inc. Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US6067412A (en) * 1995-08-17 2000-05-23 Microsoft Corporation Automatic bottleneck detection by means of workload reconstruction from performance measurements
JPH09212389A (ja) * 1996-01-31 1997-08-15 Sumitomo Electric Ind Ltd コンピュータシステムの異常状態検出方法および装置
US5812780A (en) * 1996-05-24 1998-09-22 Microsoft Corporation Method, system, and product for assessing a server application performance
JPH1063544A (ja) * 1996-08-20 1998-03-06 Toshiba Corp タイムアウト監視方式
DE69807088D1 (de) * 1997-05-14 2002-09-12 Compuware Corp Exakte information über profil und zeitablauf für multitasking-systeme
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US6205561B1 (en) * 1997-12-11 2001-03-20 Microsoft Corporation Tracking and managing failure-susceptible operations in a computer system
US6425093B1 (en) * 1998-01-05 2002-07-23 Sophisticated Circuits, Inc. Methods and apparatuses for controlling the execution of software on a digital processing system
JP3897897B2 (ja) * 1998-03-20 2007-03-28 富士通株式会社 ネットワークコンピューティング環境におけるトラブルシューティング装置及びトラブルシューティング方法並びにトラブルシューティングプログラムを記録したコンピュータ読取可能な記録媒体
US6633908B1 (en) * 1998-05-20 2003-10-14 International Business Machines Corporation Enabling application response measurement
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6467052B1 (en) * 1999-06-03 2002-10-15 Microsoft Corporation Method and apparatus for analyzing performance of data processing system
JP2001101033A (ja) * 1999-09-27 2001-04-13 Hitachi Ltd オペレーティングシステム及びアプリケーションプログラムの障害監視方法
US6665758B1 (en) * 1999-10-04 2003-12-16 Ncr Corporation Software sanity monitor
US6745383B1 (en) * 1999-12-29 2004-06-01 Veritas Operating Corporation Early warning mechanism for enhancing enterprise availability
US6618825B1 (en) * 2000-04-20 2003-09-09 Hewlett Packard Development Company, L.P. Hierarchy of fault isolation timers
US6754612B1 (en) * 2000-06-29 2004-06-22 Microsoft Corporation Performance markers to measure benchmark timing of a plurality of standard features in an application program
JP2002132541A (ja) * 2000-10-25 2002-05-10 Nippon Signal Co Ltd:The 演算処理装置
US6789046B1 (en) * 2000-12-05 2004-09-07 Microsoft Corporation Performance logging solution
JP2002215433A (ja) * 2001-01-19 2002-08-02 Mitsubishi Electric Corp メモリダンプ装置
US6961928B2 (en) * 2001-10-01 2005-11-01 International Business Machines Corporation Co-ordinate internal timers with debugger stoppage
WO2003040919A2 (en) * 2001-11-07 2003-05-15 Sap Aktiengesellschaft Providing isolation through process attachable virtual machines
US6892331B2 (en) * 2002-01-17 2005-05-10 International Business Machines Corporation Method and system for error detection in a managed application environment
US20030226062A1 (en) * 2002-06-03 2003-12-04 Gender Thomas K. System and method for testing response to asynchronous system errors
US20040040013A1 (en) * 2002-08-26 2004-02-26 Mohit Kalra Time-based breakpoints in debuggers
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7702957B2 (en) * 2004-05-21 2010-04-20 Bea Systems, Inc. Systems and methods for timer service

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8842555B2 (en) 2005-10-21 2014-09-23 Qualcomm Incorporated Methods and systems for adaptive encoding of real-time information in packet-switched wireless communication systems

Also Published As

Publication number Publication date
CN1755648A (zh) 2006-04-05
EP1650661A3 (en) 2009-09-09
US20060075304A1 (en) 2006-04-06
US7383470B2 (en) 2008-06-03
CN100481021C (zh) 2009-04-22
JP2006107430A (ja) 2006-04-20
EP1650661A2 (en) 2006-04-26

Similar Documents

Publication Publication Date Title
KR20060046281A (ko) 컴퓨터 프로그램의 미응답 부분을 식별하기 위한 방법,시스템 및 장치
US7908521B2 (en) Process reflection
US10061631B2 (en) Detecting unresponsiveness of a process
US5872909A (en) Logic analyzer for software
KR101036702B1 (ko) 프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법,시스템 및 장치
US8230429B2 (en) Detecting a deadlock condition by monitoring firmware inactivity during the system IPL process
US7149928B2 (en) User transparent software malfunction detection and reporting
US7337365B2 (en) Platform for computer process monitoring
US7958402B2 (en) Generate diagnostic data for overdue thread in a data processing system
JP4562568B2 (ja) 異常検出プログラムおよび異常検出方法
CN111324423B (zh) 容器内进程的监控方法、装置、存储介质和计算机设备
JP2007157131A (ja) ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス
CN108763089B (zh) 一种测试方法、装置及***
CN112416581B (zh) 定时任务的分布式调用***
US20030212788A1 (en) Generic control interface with multi-level status
CN106775620B (zh) 一种定时方法及装置
US20050033952A1 (en) Dynamic scheduling of diagnostic tests to be performed during a system boot process
Smith Software performance antipatterns in cyber-physical systems
CN105589787A (zh) 应用程序的健康检查方法及健康检查***
CN112650610B (zh) 一种Linux***崩溃控制方法、***及介质
CN114217925A (zh) 一种实现异常自动重启的业务程序运行监控方法及***
CN111857689A (zh) 一种框架、框架的功能配置方法、终端及存储介质
US11144369B2 (en) Preemptive self-healing of application server hanging threads
CN114416517A (zh) 一种嵌入式多核处理器的防护与诊断方法及装置
CN114896046A (zh) 数据处理方法、装置、电子设备、介质和产品

Legal Events

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