KR0121767B1 - 병행 칠(chill) 프로그램 디버깅 방법 - Google Patents

병행 칠(chill) 프로그램 디버깅 방법

Info

Publication number
KR0121767B1
KR0121767B1 KR1019940033346A KR19940033346A KR0121767B1 KR 0121767 B1 KR0121767 B1 KR 0121767B1 KR 1019940033346 A KR1019940033346 A KR 1019940033346A KR 19940033346 A KR19940033346 A KR 19940033346A KR 0121767 B1 KR0121767 B1 KR 0121767B1
Authority
KR
South Korea
Prior art keywords
program
graph
file
parallel
event history
Prior art date
Application number
KR1019940033346A
Other languages
English (en)
Other versions
KR960024964A (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 KR1019940033346A priority Critical patent/KR0121767B1/ko
Publication of KR960024964A publication Critical patent/KR960024964A/ko
Application granted granted Critical
Publication of KR0121767B1 publication Critical patent/KR0121767B1/ko

Links

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

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

본 발명은 병행 칠(CHILL) 프로그램 실행시 작성되는 사건 이력을 이용하여 디버깅하는 방법에 관한 것으로, 병행 처리 프로그램의 오류를 효율적으로 추적하는 디버깅 방법을 제공하기 위하여, 정적 프로그램 연관 관계 그래프와 실행 화일을 생성한 후에 사건 이력 화일을 생성하는 제1단계(201 내지 204); 동적 프로그램 연관 관계 그래프를 생성하여 병행 프로그램의 액세스 이상(access anomaly) 오류 발생을 판단하는 제2단계(205 내지 207); 오류 발생이면 병행 칠 프로그램의 액세스 이상 오류를 수정한 후에 상기 제1단계(201 내지 204)와 제2단계(205 내지 207)를 반복 수행하는 제3단계(208); 및 오류 발생이 아니면 병행 칠 프로그램의 실행 과정을 추적하는 과정을 디버깅 종료시까지 수행하는 제4단계(209,210)를 포함하여 프로그램 재실행에 대한 오버헤드가 없고, 재실행성이 보장되지 않는 시스템에서도 실행 오류를 추적할 수 있는 효과가 있다.

Description

병행 칠(CHILL) 프로그램 디버깅 방법
제1도는 본 발명이 적용되는 하드웨어의 구성도.
제2도는 본 발명에 따른 병행 칠 프로그램 디버깅 방법에 대한 처리 흐름도.
제3도는 본 발명에 따른 병행 프로세스의 사건 이력 화일 생성 과정에 대한 상세 처리 흐름도.
제4도는 본 발명에 따른 정적 프로그램 연관 그래프 생성 과정에 대한 상세 처리 흐름도.
제5도는 본 발명에 따른 동적 프로그램 연관 그래프 생성 과정에 대한 상세 처리 흐름도.
* 도면의 주요부분에 대한 부호의 설명
101 : 메인 메모리 보드 102 : 중앙 처리 보드
103 : 범용 운영체계 104 : 보조 기억 장치
105 : 입/출력 장치 106 : 시스템 버스
본 발명은 병행 칠(CHILL) 프로그램 실행시 작성되는 사건 이력을 이용하여 병행 칠 프로그램을 디버깅하는 디버깅 방법에 관한 것이다.
종래의 디버깅 방법은 병행 칠(CHILL) 프로그램을 디버깅하기 위해서 목적 시스템에 칠(CHILL) 소스레벨 디버거를 내장시키는 방법을 사용하였다.
상기와 같은 종래의 디버깅 방법은 디버깅될 프로그램의 심볼릭 정보들이 실행 화일과 함께 목적 시스템에 다운로딩되어야 하며, 소스레벨 디버깅을 지원하기 위하여 실행 화일과 관련된 모든 소스 화일이 각 프로세서에 로딩되어야 하는 문제점이 있었다.
상기 문제점을 해결하기 위하여 안출된 본 발명은, 병행 칠(CHILL)프로그램 실행시 작성되는 사건 이력을 이용하여 병행 칠 프로그램을 디버깅하여 병행 처리 프로그램의 오류를 효율적으로 추적할 수 있는 디버깅 방법을 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위하여 본 발명은, 디버깅 정보 생성 루틴을 포함하는 실행화일과 정적 프로그램 연관 그래프를 생성하는 컴파일러 및 디버깅 도구가 탑재되는 메인 메모리 보드, 상기 메인 메모리 보드에 탑재된 화일을 실행시키는 중앙 처리 보드, 상기 메인 메모리 보드에 탑재되지 않은 화일과 도구들을 저장하는 보조 기억 장치, 디버깅을 하기 위하여 필요한 화일 및 데이타와 수행중에 발생하는 모든 오류 메세지를 입/출력하는 입/출력 장치, 상기 각 보드 및 장치를 제어하는 운영체계, 및 상기 각 보드 및 장치간에 주고 받는 메세지의 전송로인 시스템 버스를 구비하는 장치에 적용되는 디버깅 방법에 있어서, 병행 프로그램을 읽어 정적 프로그램 연관 관계 그래프와 사건 이력 기능을 포함하는 실행 화일을 생성한 후에 상기 실행 화일을 실행하면서 사건 이력 화일을 생성하는 제1단계; 상기 정적 프로그램 연관 관계 그래프와 상기 사건 이력 화일을 이용하여 동적 프로그램 연관 관계 그래프를 생성하여 병행 프로그램의 액세스 이상(access anomaly) 오류 발생을 판단하는 제2단계; 상기 제2단계의 판단 결과, 오류 발생이면 병행 프로그램의 액세스 이상 오류를 수정한 후에 상기 제1단계부터 반복 수행하는 제3단계; 및 상기 제2단계의 판단 결과, 오류 발생이 아니면 동적 프로그램 연관 관계 그래프를 이용하여 병행 프로그램의 실행 과정을 추적하는 과정을 디버깅 종료시까지 수행하는 제4단계를 포함한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 일실시예를 상세히 설명한다.
제1도는 본 발명이 적용되는 하드웨어의 구성도로서, 도면에서 보는 바와 같이 101은 시스템의 메인 메모리 보드, 102는 중앙 처리 보드, 103은 병용 운영체계, 104는 보조 기억 장치, 105는 입/출력 장치, 106은 시스템 버스를 각각 나타낸다.
도면에 도시한 각 블럭들의 기능을 살펴보면, 시스템의 메인 메모리 보드(101)는 디버깅 정보 생성 루틴을 포함하는 실행 화일, 정적 프로그램 연관 그래프를 생성하는 컴파일러, 및 디버깅 도구가 탑재되는 보드이고, 중앙 처리 보드(102)는 메인 메모리에 탑재된 화일을 실행시키는 보드이다.
그리고, 보조 기억 장치(104)는 시스템에서 사용하는 화일 및 데이타 등을 저장하는 장치로 메인 메모리보드(101)에 탑재되지 않은 화일과 도구들이 저장된다. 입/출력 장치(105)는 디버깅을 하기 위하여 필요한 화일 및 데이타, 수행중에 발생하는 모든 오류 메세지를 입/출력하는 장치이다. 범용 운영체계(103)는 상기 보드 및 장치를 제어하며, 각 보드 및 장시간에 주고 받는 메세지는 시스템 버스(106)를 통하여 전송이 이루어진다.
제2도는 본 발명에 따른 병형 칠(CHILL) 프로그램 디버깅 방법에 대한 처리 흐름도이다.
본 발명의 첫 단계에서는 병행 칠(CHILL) 프로그램을 읽어서(201) 칠(CHILL) 프로그램의 병행 블럭간의 연관 관계 및 블럭내에서 읽기/쓰기(read/write) 하는 변수들의 값을 포함하는 정적 프로그램 연관 관계 그래프를 생성하고(202), 사건 이력을 기록하는 기능을 포함하는 칠(CHILL) 실행 화일을 생성한다(203). 생성된 칠(CHILL) 실행 화일이 실행되어 프로그램 제어가 각 병행 블럭의 시작 지점에 도착하면 병행 블럭의 이름 및 블럭에서 읽기/쓰기(read/write) 하는 변수값을 사건 이력 화일에 기록하고, 블럭내에서 송/수신하는 시그널이 존재하는 경우에는 그 이름 및 메세지의 내용을 사건 이력 화일에 기록하며, 프로그램 제어가 블럭의 끝나는 지점에 도착하면 블럭에서 쓰기(write)한 변수의 값을 사건 이력 화일에 기록한다(204).
실행 칠(CHILL) 프로그램의 실행이 종료되거나 오류가 발생하여 실행이 종료되면 기록된 이력 화일 및 정적 프로그램 연관 관계 그래프를 이용하여 프로그램의 병행 블럭간의 연관 관계를 표현하는 동적 프로그램 연관 관계 그래프를 생성한다(205).
작성된 동적 프로그램 연관 관계 그래프를 이용하여 프로그램의 병행 블럭간에 액세스 이상(access anomaly)이 존재하는지를 검사하여(206) 액세스 이상이 존재하면 액세스 이상의 존재 위치를 출력하여 사용자가 오류를 수정한 후에(208) 수정된 프로그램을 다시 병행 칠 프로그램 입력 단계(201)로 피드백(feedback)시켜 반복 실행하여 액세스 이상이 존재하지 않는 동적 프로그램 연관 관계 그래프를 작성한다. 이상 발생이 없으면 사용자는 동적 프로그램 연관 관계 그래프를 이용하여 디버깅하고자 하는 병행 블럭에서 이 블럭의 시작 지점에서 읽기/쓰기(read/write)하는 변수 값과, 블럭의 끝나는 지점에서의 변경된 변수 값을 참조하여 프로그램의 실행오류를 추적하고, 병행 블럭간에 주고 받는 시그널 및 메세지의 내용을 참조하여 병행 칠 프로그램의 실행 과정을 추정한다(209). 더 이상의 디버깅의 필요하지 않은 경우에 디버깅 종료 명령문을 실행하여 디버깅을 종료하고(210) 디버깅이 필요하면 상기 병행 칠 프로그램의 실행 과정 추적이 반복한다.
제3도는 본 발명에 따른 병형 프로세서의 사건 이력 화일 생성 과정에 대한 상세 처리 흐름도이다.
칠(CHILL) 실행 화일이 실행되면서 사건을 기록할 수 있도록 사건 이력 화일을 오픈(open)한다(301). 칠(CHILL) 실행 화일은 실행되면서 병행 블럭의 시작 지점을 만나면(302) 병행 블럭의 이름과 이 블럭에서 읽기/쓰기(read/write) 하는 변수의 값을 기록하는 과정(303)을 칠 실행 화일이 종료될 때가지 계속 실행한다.
칠 실행 화일은 프로그램 실행도중 메세지 송/수신 명령을 만나면(304) 송/수신 메세지 이름 및 내용을 기록하는 과정(305)을 칠 실행 화일이 종료될 때까지 계속 실행한다.
칠 실행 화일은 프로그램 실행도중 병행 블럭의 마지막을 만나면(306) 블럭 내에서 사용하였던 변수중 값이 변한 변수의 값을 기록하는 과정(307)을 칠 실행 화일이 종료될 때가지 반복 수행한다. 상기 과정을 반복 수행하다가 칠(CHILL) 실행 화일이 종료되면(308) 사건 이력 화일을 클로우즈(close)하여 (309) 사건 이력 화일이 생성을 종료한다.
제4도는 본 발명에 따른 정적 연관 관계 그래프 생성 과정에 대한 상세 처리 흐름도이다.
칠(CHILL) 컴파일러는 병행 칠(CHILL) 프로그램을 읽어서(401) 구문을 분석하여 추상 구문 트리(Abstract Syntax Tree)를 구성한다(402), 작성된 병행 칠(CHILL) 프로그램의 추상 구문 트리(AST)를 이용하여 병행 블럭의 연관 관계 그래프를 작성한다(403). 병행 칠(CHILL) 프로그램 컴파일 과정에서 분석된 각 병행 블럭에서 사용하는 변수중 읽기/쓰기(read/write) 변수들의 리스트를 블럭별로 작성하여(404) 병행 블럭 그래프의 해당 블럭에 삽입하여 병행 블럭의 정적 연관 관계 그래프를 생성한다(405).
제5도는 본 발명에 따른 동적 프로그램 연관 그래프 생성 과정에 대한 상세 처리 흐름도이다.
정적 연관 관계 그래프 및 사건 이력 화일을 읽어(501) 사건 이력 화일에 기록된 병행 블럭의 실행 그래프를 작성한다(502). 작성된 블럭의 실행 그래프와 정적 연관 관계 그래프를 이용하여 동적 연관 관계 그래프의 골격을 작성한다(503). 정적 연관 관계 그래프를 이용하여 각 블럭별로 읽기/쓰기(read/write)하는 변수의 리스트를 동적 연관 관계 그래프에 삽입한다(504). 사건 이력 화일에 기록된 각 블럭의 시작과 마지막에 기록된 읽기/쓰기(read/write) 변수들의 값의 로그를 이용하여 동적 연관 관계 그래프의 각 블럭별 읽기/쓰기(read/write) 변수의 값을 치환하고(505), 블럭간의 시그널 송/수신 관계를 동적 그래프에 삽입하여 동적 프로그램 연관 관계를 그래프를 생성한다(506).
상기와 같은 본 발명은 분산 시스템 디버깅에도 용이하게 이용될 수 있다.
상기와 같은 본 발명은 프로그램 재실행에 대한 오버헤드가 없으며, 재실행성이 보장되지 않는 시스템에서도 실행 오류를 추적할 수 있는 효과가 있다.

Claims (4)

  1. 디버깅 정보 생성 루틴을 포함하는 실행 화일과 정적 프로그램 연관 그래프를 생성하는 컴파일러 및 디버깅 도구가 탑재되는 메인 메모리 보드, 상기 메인 메모리 보드에 탑재된 화일을 실행시키는 중앙 처리보드, 상기 메인 메모리 보드에 탑재되지 않은 화일과 도구들을 저장하는 보조 기억 장치, 디버깅을 하기 위하여 필요한 화일 및 데이타와 수행중에 발생하는 모든 오류 메세지를 입/출력하는 입/출력 장치, 상기 각 보드 및 장치를 제어하는 운영체계, 및 상기 각 보드 및 장치간에 주고 받는 메세지의 전송로인 시스템 버스를 구비하는 장치에 적용되는 디버깅 방법에 있어서, 병행 프로그램을 읽어 정적 프로그램 연관 관계 그래프와 사건 이력 기능을 포함하는 실행 화일을 생성한 후에 상기 실행 화일을 실행하면서 사건 이력 화일을 생성하는 제1단계; 상기 정적 프로그램 연관 관계 그래프와 상기 사건 이력 화일을 이용하여 동적 프로그램 연관 관계 그래프를 생성하여 병행 프로그램의 액세스 이상(access anomaly) 오류 발생을 판단하는 제2단계; 상기 제2단계의 판단 결과, 오류 발생하면 병행 프로그램의 액세스 이상 오류를 수정한 후에 상기 제1단계부터 반복 수행하는 제3단계; 및 상기 제2단계의 판단 결과, 오류 발생이 아니면 동적 프로그램 연관 관계 그래프를 이용하여 병행 프로그램의 실행 과정을 추적하는 과정을 디버깅 종료시까지 수행하는 제4단계를 포함하여 이루어진 병행 프로그램 디버깅 방법.
  2. 제1항에 있어서, 상기 제1단계의 정적 프로그램 연관 관계 그래프 생성 과정은, 병행 소스 화일을 읽고 분석하여 추상 구문 트리(AST)를 구성하는 제5단계; 작성된 병행 프로그램의 추상 구문 트리를 이용하여 정적 프로그램 연관 관계 그래프를 작성하는 제6단계; 및 프로그램 컴파일시 각 병행 블럭에서 사용하는 읽기/쓰기 변수들의 리스트를 각 병행 블럭별로 작성하여 해당 병행 블럭에 삽입하여 정적 프로그램 연관 관계 그래프를 작성하는 제7단계를 포함하여 이루어진 병행 프로그램 디버깅 방법.
  3. 제2항에 있어서, 상기 제1단계의 사건 이력 화일을 생성하는 과정은, 사건 이력 화일을 오픈(open)하는 제8단계; 실행 화일 실행중 병행 블럭이 시작되면 병행 블럭의 이름과 해당 병행 블럭의 읽기/쓰기 변수 값을 기록하는 제9단계; 실행 화일 실행중 메세지가 송/수신되면 송/수신 메세지의 이름과 내용을 기록하는 제10단계; 실행 화일 실행 중 병형 블럭이 끝나면 병행 블럭내에서 변경된 변수의 값을 기록하는 제11단계; 및 실행 화일이 종료되면 사건 이력 화일을 클로우즈(close)하여 사건 이력 화일의 생성을 종료하는 제12단계를 포함하여 이루어진 병행 프로그램 디버깅 방법.
  4. 제1항 내지 제3항중 어느 한 항에 있어서, 상기 제2단계의 동적 프로그램 연관 관계 그래프를 생성하는 과정은, 정적 프로그램 연관 관계 그래프와 사건 이력 화일을 읽어 사건 이력 파일에 기록된 병행 블럭의 실행 그래프를 작성하는 제13단계; 작성된 병행 블럭의 실행 그래프와 정적 프로그램 연관 관계 그래프를 이용하여 동적 그래프를 작성하는 제14단계; 정적 연관 관계 그래프를 이용하여 각 블럭에서 사용하는 읽기/쓰기 변수들을 동적 그래프에 삽입하는 제15단계; 사건 이력을 분석하여 동적 그래프의 각 블럭의 시작과 끝에 읽기/쓰기 변수들을 등록하고 값을 치환하는 제16단계; 및 블럭간의 시그널 송/수신 관계를 동적 그래프에 삽입하여 동적 프로그램 연관 관계 그래프를 작성하는 제17단계를 포함하여 이루어진 병행 프로그램 디버깅 방법.
KR1019940033346A 1994-12-08 1994-12-08 병행 칠(chill) 프로그램 디버깅 방법 KR0121767B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019940033346A KR0121767B1 (ko) 1994-12-08 1994-12-08 병행 칠(chill) 프로그램 디버깅 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019940033346A KR0121767B1 (ko) 1994-12-08 1994-12-08 병행 칠(chill) 프로그램 디버깅 방법

Publications (2)

Publication Number Publication Date
KR960024964A KR960024964A (ko) 1996-07-20
KR0121767B1 true KR0121767B1 (ko) 1997-11-22

Family

ID=19400755

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940033346A KR0121767B1 (ko) 1994-12-08 1994-12-08 병행 칠(chill) 프로그램 디버깅 방법

Country Status (1)

Country Link
KR (1) KR0121767B1 (ko)

Also Published As

Publication number Publication date
KR960024964A (ko) 1996-07-20

Similar Documents

Publication Publication Date Title
CA2162020C (en) Method and apparatus for the automatic analysis of computer software
RU2473115C2 (ru) Способ автоматического генерирования сценария для проверки правильности функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для применения способа
CN106909498B (zh) 一种Java程序注入故障的方法和系统
US8448152B2 (en) High-level language, architecture-independent probe program compiler
US6415436B1 (en) Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
US6314557B1 (en) Hybrid computer programming environment
JP2004164554A (ja) プログラム実行監視装置および方法
US8225286B2 (en) Debugging interpreted input
US20130014091A1 (en) Language conversion method and language conversion program
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
KR0121767B1 (ko) 병행 칠(chill) 프로그램 디버깅 방법
US6178547B1 (en) Method and apparatus for generating non-redundant symbolic debug information in computer programs
JP4528284B2 (ja) プログラマブルコントローラ
KR100309632B1 (ko) 최적화이미지에대응한디버그용소스파일을생성하는언어처리시스템및방법
CN110990252B (zh) 一种嵌入式飞控软件测试质量和效率的测试方法
KR0175469B1 (ko) 칠프로그램 변수의 가시성 제어방법
CN113761486B (zh) 一种基于语法糖解析的一键式代码混淆方法
KR100216533B1 (ko) 병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법
KR970001611B1 (ko) 칠 분리 컴파일 방법
JP3368795B2 (ja) コンパイル制御方法、コンパイル装置及び記録媒体
KR0160351B1 (ko) 칠 프로그램에서 시그널 화일 자동 생성 방법
KR100248433B1 (ko) 객체지향 칠 프로그램의 디버깅 정보 합성 방법
JP2005301415A (ja) コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム
JPH05108404A (ja) デバツガシステム
KR0118994B1 (ko) 고속 통신 라인을 이용한 병행 칠(chill) 프로그램 교차 디버깅방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20040730

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee