KR20020049789A - 파워피시 마이크로프로세서에서 실행되는 병행 프로그램디버깅을 위한 스태핑 제어방법 - Google Patents

파워피시 마이크로프로세서에서 실행되는 병행 프로그램디버깅을 위한 스태핑 제어방법 Download PDF

Info

Publication number
KR20020049789A
KR20020049789A KR1020000079077A KR20000079077A KR20020049789A KR 20020049789 A KR20020049789 A KR 20020049789A KR 1020000079077 A KR1020000079077 A KR 1020000079077A KR 20000079077 A KR20000079077 A KR 20000079077A KR 20020049789 A KR20020049789 A KR 20020049789A
Authority
KR
South Korea
Prior art keywords
stepping
address
function
program
debugging
Prior art date
Application number
KR1020000079077A
Other languages
English (en)
Inventor
이은향
임동선
Original Assignee
오길록
한국전자통신연구원
이계철
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 오길록, 한국전자통신연구원, 이계철, 주식회사 케이티 filed Critical 오길록
Priority to KR1020000079077A priority Critical patent/KR20020049789A/ko
Publication of KR20020049789A publication Critical patent/KR20020049789A/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

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

본 발명은 스태핑 지원 레지스터를 갖춘 파워피시(PowerPC) 마이크로프로세서에서 실행되는 병행 프로그램의 디버깅을 위한 스태핑 제어 방법에 관한 것으로, 생성된 프로세스 제어 블록에 체크 포인트 주소를 저장하고 이 정보를 이용하여 스태핑 기능을 제공하여 병행 프로그램의 프로세스 단위 스탭 오버 기능을 제공하는 것을 특징으로 하여, 프로세스 단위 소스 코드 라인 스태핑을 가능하게 함으로써 병행 프로그램을 효과적으로 디버깅할 수 있으므로 소프트웨어 생산성 향상에 기여하는 효과가 있는 것을 특징으로 한다.

Description

파워피시 마이크로프로세서에서 실행되는 병행 프로그램 디버깅을 위한 스태핑 제어방법{A Method To Control The Stepping For Debugging Concurrent Programs Executing On PowerPC Microprocessor}
본 발명은 프로그램 디버깅에 관한 것으로, 특히 스태핑 지원 레지스터를 구비한 파워피시 마이크로프로세서에 병행 프로그램을 디버깅할 때 프로세스 단위로 소스 코드의 라인 스태핑 기능을 제공하는 방법에 관한 것이다.
작성된 프로그램의 오류를 검출하는 프로그램 디버깅 작업의 일반적인 방법은 오류가 있을 가능성이 있는 부분에서 프로그램 실행을 중단시킨 다음, 소스 코드 라인 단위로 한 줄씩 실행 시켜가며 오류가 있는지 확인하는 방법을 사용하는 것이다. 이와 같이 소스 코드 라인 또는 실행 명령어 단위로 순차 실행시키는 방법을 스태핑(stepping)이라 한다.
스태핑하는 종래의 기술은 스팍(SPARC) 마이크로프로세서와 같이 마이크로프로세서가 스태핑 기능을 제공하지 않는 경우에는, 이를 제어하는 디버거에서 스태핑 시작 지점과 스태핑 종료 지점을 정한 다음, 스태핑 종료 지점에 브레이크포인트 명령어를 삽입한 후 실행시켜 브레이크포인트 히트 정보를 이용하여 스태핑을 실현하는 방법을 사용하는 것이다.
최근 이러한 디버깅 작업을 내부 기능으로 수행할 수 있도록 파워피시 마이크로프로세서와 같이 마이크로프로세서에 레지스터를 이용한 스태핑 기능이 제공되어 있는데, 상기 파워피시 마이크로프로세서에 제공된 스태핑 기능은 하나의 명령어 단위 스태핑(single instruction stepping)을 제공하는 것이다.
그러나, 일반적으로 소스 프로그램 단위 디버깅을 위해서는 한 명령어(instruction) 뿐만 아니라, 명령어들의 모임인 한 펑션(function)단위 스태핑 기능이 필요하다. 즉, 스태핑 도중에 펑션 콜 문을 만나는 경우, 그 펑션 내부로 들어가며 한 라인씩 스태핑 할 수 있어야 할 뿐만 아니라, 펑션 콜 라인을 한번에 스태핑한 다음, 다음 소스 라인을 계속하여 스태핑할 수도 있어야 한다.
일반적으로, 병행 프로그램은 동시에 실행하는 여러 프로세스들로 구성된다. 따라서, 병행 프로그램을 스태핑하기 위해서는 실행 단위인 프로세스 별로 소스 라인 스태핑이 가능하여야 한다. 이는 소스 라인을 구성하는 일반 명령어들 뿐만 아니라, 펑션 콜을 만나는 경우 펑션 콜에 대한 스태핑 기능을 제공함을 의미한다.
펑션 콜에 대한 스태핑의 종류는 스탭 오버(step over)와 스탭 인투(step into)가 있다. 스탭 오버는 펑션 콜 전체를 한번에 스태핑하는 것을 의미하고, 스탭 인투는 펑션 콜에 의해 만나는 펑션 내부의 실행 코드 부분으로 들어가서 스태핑하는 것을 의미한다. 따라서 사용자 입장에서는 스탭 오버를 실행하면 해당 펑션의 소스 코드 내부를 디버깅하지 않고 건너 뛰게 되고, 스탭 인투를 해야 해당 펑션내의 소스 코드를 스태핑하며 디버깅할 수 있게 된다. 그러므로, 펑션 콜이 아닌 일반 소스 라인에서의 스태핑은 스탭 인투와 스탭 오버가 동일한 효과를 가진다.
후버 윌리암스 에스.(Huber William, S.) 등에 의해 1987년 5월 1일 출원하여 1989년 4월 4일 등록된 미국 특허 제4,819,234호(발명의 명칭 : "Operating System Debugger")에는 운영체제에 내장되는 디버거를 제공하기 위해, 디버거가 다음에 실행될 명령어 주소와 그 다음에 실행될 명령어 주소를 예견하여 프로그램의 코드가 적재된 영역에서 해당 주소에 브레이크 포인트를 기존의 명령어 코드와 대체하는 기술이 개시되어 있다.
그러나, 상기 선행 특허는 하나의 프로세스로 구성되는 순차 프로그램 디버깅에 관한 것으로, 한 명령어 단위 스티핑만을 제공, 즉 앞서 설명한 스탭 인투 기능만 제공할 뿐이어서, 펑션 콜에서의 스탭 오버 기능은 함께 제공하지는 못하고 있다.
따라서, 프로그램 디버깅 작업에 있어서 소스 라인 스태핑에 있어서 스탭 인투 기능과 스탭 오버 기능 모두를 효과적으로 제공하는 프로세서가 요구된다.
본 발명은 상기 언급한 종래 기술의 문제점을 해결하기 위해 도출된 것으로, 한 명령어 단위 스태핑만 지원하는 스태핑 지원 레지스터(MSR : Machine State Register)가 있는 파워피시 마이크로프로세서에서 이와 같은 병행 프로그램의 소스 라인 스태핑 기능(스탭 오버 및 스탭 인투)을 제공하는 것을 목적으로 한다.
도 1은 본 발명이 적용되는 하드웨어 구성도
도 2는 본 발명이 적용되는 병행 프로그램 구조
도 3은 본 발명이 적용되는 실행코드 구조
도 4는 본 발명에 따른 프로세스 단위 소스 라인 스태핑 처리 흐름도
*도면의 주요 부분에 대한 부호의 설명
100 : 파워피시 마이크로프로세서 101 : 중앙처리장치
102 : 메인 메모리 103 : 시스템 버스
104 : 레지스터 유니트
105 : 스태핑 지원 레지스터 (MSR : Machine State Register)
200 : 메인 메모리 201 : 병행 프로그램
202 : 프로세스 203 : 실행코드 영역
204 : 데이터 영역
205 : 프로세스 제어 블록 (PCB : Process Control Block)
206 : 스택 영역
본 발명의 적절한 실시예에 따르면, 스태핑 지원 레지스터를 갖춘 파워 PC 마이크로프로세서에서 실행되는 병행 프로그램의 디버깅을 위한 스태핑 제어 방법이 제공되는데, 상기 방법은, 생성된 프로세스 제어 블록에 체크 포인트 주소를 저장하고 이 정보를 이용하여 스태핑 기능을 제공하여 병행 프로그램의 프로세스 단위 스탭 오버 기능을 제공하는 것을 특징으로 한다.
앞서 설명한 본원의 특징 및 더 다른 장점들은 이하 설명할 발명의 상세한 설명을 통해 보다 명확해 질 것이다.
지금부터 첨부한 도면을 참고하여 본 발명의 적절한 실시예를 자세히 설명하도록 하겠다.
먼저, 도 1을 참고하면, 본 발명이 적용되는 하드웨어 구성도가 도시되어 있다. 도 1을 통해 볼 수 있듯이, 파워피시 마이크로프로세서(100)는 중앙처리장치(101)와 메인 메모리(102)가 시스템 버스(103)로 연결되어 있고, 중앙처리장치(101)의 레지스터 유니트(104)는 스태핑 지원 레지스터(MSR: Machine State Register)(105)를 포함하고 있다.
다음으로, 도 2를 참고하면, 본 발명이 적용되는 병행 프로그램 구조가 도시되어 있다. 메인 메모리(200)에 적재되는 병행 프로그램(201)은 여러 개의 동시에 실행 가능한 프로세스(202)들로 구성되고, 이들 프로세스들(202)은 실행 코드 영역(203)과 데이터 영역(204)은 공유하지만, 독립된 프로세스 제어 블록(PCB)(205)과 스택 영역(206)을 갖는다.
다음으로, 도 3을 참고하면, 본 발명이 적용되는 실행코드 구조가 도시되어 있다. 펑션 메인(300)에서 펑션 F1을 콜(call)하고(301), 펑션 F1(302)에서 펑션 F2를 콜(303)하고, 펑션 F2(304)에서 펑션 F3를 콜(305)하는 구조를 가정하면 펑션F3(306)가 실행 완료하여 리턴되는 지점은 펑션 F2의 일반 실행문 C(307)의 첫번째 명령어가 되고, 펑션 F2(304)의 실행이 완료되어 리턴되는 지점은 펑션 F1의 일반 실행문 B(308)의 첫번째 명령어이고, 펑션 F1(302)이 실행 완료하여 리턴하는 지점은 펑션 메인의 일반 실행문 A(309)의 첫번째 명령어가 된다.
이와 같은 프로그램 구조를 갖는 프로세스에서 펑션 메인의 펑션 콜 F1 문장(301)을 스태핑하는 방법은 두 가지가 있다. 하나는 펑션 콜 F1 문장(301)을 스탭 인투하는 경우이고 다른 하나의 스탭 오버하는 경우이다. 만약 펑션 콜 F1 문장(301)을 스탭 인투하게 되면 펑션 F1의 진입지점(310)으로 제어가 넘어가게 되고, 펑션 콜 F1 문장(301)을 스탭 오버하게 되면 제어가 일반 실행문 A(309)로 넘어가게 된다. 마찬가지로, 펑션 F1의 펑션 콜 F2 문장(303)을 스태핑하는 경우도 스탭 오버하게 되면 일반 실행문 B(308)로 제어가 넘어가서 일반 실행문 B(308)를 바로 스태핑 가능하고, 스탭 인투하게 되면 펑션 F2의 진입 지점(311)으로 제어가 넘어가서 펑션 F2의 진입 지점(311)부터 원하면 스태핑을 계속할 수 있다.
본 발명의 적절한 실시예에 따르면, 스태핑 기능을 제공하기 위해 병행 프로그램을 구성하는 프로세스가 생성될 때 프로세서 제어 블록에 스탭 오버 기능 수행 때 사용할 체크 포인트 주소를 저장할 공간을 마련하고 0으로 초기화 하는 제1 단계와, 사용자 또는 디버거로부터 스태핑 요구를 받으면 스태핑할 프로세스 상태가 실행 중단 상태인지 조사하여 실행 중단 상태일 때 스태핑을 시작하는데, 먼저, 스태핑할 주소에 저장된 명령어를 읽어와서 펑션 콜 명령어이고 스탭 오버 요구이면펑션 콜 명령어 다음에 오는 명령어에 대한 주소를 프로세스 제어 블록의 체크 포인터 주소 저장 영역에 기록하는 제2 단계와, 파워피시 마이크로프로세서의 레지스터들 중에 스태핑 지원 레지스터인 MSR(Machine State Register)의 싱글 스탭 트레이스(single step trace) 비트를 1로 세팅하여 활성화시킨 다음 실행 중단하고 있는 스태핑할 프로세스를 실행 재개 시키고 스탭 히트 트랩이 발생하기를 기다리는 제3 단계와, 스탭 히트 트랩이 발생하면, 다음 스태핑 할 주소를 현재 프로그램 카운터로 변경하고, 프로그램 카운터가 프로세스 제어 블록의 체크 포인터 주소 저장 영역에 저장된 주소와 동일한지 조사하여 동일하지 않으면 다음 스태핑을 계속하고, 동일하면 프로세스 제어 블록의 체크 포인트 주소 저장 영역의 값을 0으로 초기화하는 제4 단계와, 프로그램 카운터가 스태핑 종료 주소에 도달 하였는지 조사하여 도달하지 않았으면 다음 스태핑을 계속하고, 도달하였으면 스태핑 지원 레지스터인 MSR의 싱글 스탭 트레이스 비트를 0으로 세팅하여 비활성화 시키고 스태핑을 종료하는 제5 단계를 포함하여 이루어 진다.
상기 설명한 본 발명의 적절할 실시예에 따른 스태핑 방법을 도 4를 참고하여 보다 자세하게 설명하도록 하겠다. 도 4는 본 발명에 따른 프로세스 단위 소스 라인 스태핑 처리 흐름도이다.
먼저, 병행 프로그램을 구성하는 프로세스가 생성될 때 프로세서 제어 블록에 스탭 오버 기능 수행 때 사용할 체크 포인트 주소를 저장할 공간을 마련하고 0으로 초기화 한다(단계 400).
상기 과정 수행 후, 사용자 또는 디버거로부터 스태핑 요구를 받으면 스태핑할 프로세스 상태가 실행 중단 상태인지 조사하여 실행 중단 상태이면 스태핑을 시작한다(단계 401).
다음으로, 스태핑할 주소에 저장된 명령어를 읽어와서(단계 402), 펑션 콜 명령어인지 판단하고(단계 403), 펑션 콜 명령어이면 스탭 오버 요구인지 판단하고(단계 404), 스탭 오버 요구인 경우에는 펑션 콜 명령어 다음에 오는 명령어에 대한 주소를 프로세스 제어 블록의 체크 포인터 주소 저장 영역에 기록한다(단계 405).
한편, 상기 단계 403 및 단계 404 판단 결과, 각각 펑션 콜 명령어가 아니거나 스탭 오버 요구가 아닌 경우에는 아래 설명할 단계 406으로 진행한다.
상기 단계 405과정 수행 후, 파워피시 마이크로프로세서의 레지스터들 중에 스태핑 지원 레지스터인 MSR(Machine State Register)의 싱글 스탭 트레이스 (single step trace) 비트를 1로 세팅하여 활성화시킨 다음(단계 406), 실행 중단하고 있는 스태핑할 프로세스를 실행 재개 시키고 스탭 히트 트랩이 발생하기를 기다린다(단계 407).
스탭 히트 트랩이 발생하면, 다음 스태핑 할 주소를 현재 프로그램 카운터로 변경하고, 프로그램 카운터가 프로세스 제어 블록의 체크 포인터 주소 저장 영역에 저장된 주소와 동일한지 조사하여(단계 408), 판단결과 동일하지 않으면(단계 409) 단계 402로 돌아가 다음 스태핑을 계속하고, 판단결과 동일하면(단계 409) 프로세스 제어 블록의 체크 포인트 주소 저장 영역의 값을 0으로 초기화한 다음(단계 410) 프로그램 카운터가 스태핑 종료 주소에 도달 하였는지 조사하여(단계 411) 도달하지 않았으면 상기 단계 402로 돌아가 다음 스태핑을 계속하고, 도달하였으면 스태핑 지원 레지스터인 MSR의 싱글 스탭 트레이스 비트를 0으로 세팅하여 비활성화 시키고(단계 412) 스태핑을 종료한다.
상술한 바와 같이 본 발명은 동시에 실행하는 프로세스들로 구성되는 병행 프로그램이 파워 PC 마이크로프로세서에서 실행하는 경우 프로세스 단위 소스 코드 라인 스태핑을 가능하게 함으로써 병행 프로그램을 효과적으로 디버깅할 수 있게 하여 소프트웨어 생산성 향상에 기여하는 효과가 있다.
지금까지 설명은 본 발명의 이해를 위해 적절한 실시예에 대한 것으로, 본 발명이 이것으로 제한되는 것은 아니며, 당 기술분야의 통상의 지식을 가진 자에게는 첨부한 특허청구범위의 범위 및 정신을 벗어나지 않고 다양한 수정 및 변형이 가능함은 명백한 것이다.

Claims (2)

  1. 스태핑 지원 레지스터를 갖춘 파워피시 마이크로프로세서에서 실행되는 병행 프로그램의 디버깅을 위한 스태핑 제어 방법에 있어서,
    생성된 프로세스 제어 블록에 체크 포인트 주소를 저장하고 이 정보를 이용하여 스태핑 기능을 제공하여 병행 프로그램의 프로세스 단위 스탭 오버 기능을 제공하는 것을 특징으로 하는 병행 프로그램의 디버깅을 위한 스태핑 제어 방법
  2. 제 1 항에 있어서,
    상기 스태핑 기능 제공은:
    프로세스가 생성될 때 프로세스 제어 블록(PCB)에 스탭 오버 제어를 위해 사용하는 체크 포인트 주소를 저장할 공간을 마련하여 초기화하는 단계와;
    스태핑 할 주소에 저장된 명령어를 읽어와 펑션 콜 명령어이고 스탭 오버 기능 수행인 경우 펑션 콜 명령어 다음에 오는 명령어에 대한 주소를 프로세스 제어 블록의 체크 포인트 주소 저장 영역에 기록하는 단계와;
    스태핑 지원 레지스터의 싱글 스탭 트레이스(single step trace) 비트를 활성화 시킨 다음 스태핑할 프로세스를 실행 재개 시키고 스탭 히트 트랩을 기다리는 단계와;
    스탭 히트 트랩이 발생하면 다음 스태핑 주소를 현재 프로그램 카운터 값으로 변경하고 프로그램 카운터 값이 PCB에 저장된 체크 포인트 주소 값과 동일한지조사하는 단계와;
    상기 조사 결과, 동일하면 프로세스 제어 블록의 체크 포인트 주소 값을 다시 초기화 하고, 프로그램 카운터가 스태핑 종료 주소에 도달하면 스태핑 지원 레지스터의 싱글 스탭 트레이스 비트를 비활성화 시키는 단계를 포함하는 것을 특징으로 하는 스태핑 방법.
KR1020000079077A 2000-12-20 2000-12-20 파워피시 마이크로프로세서에서 실행되는 병행 프로그램디버깅을 위한 스태핑 제어방법 KR20020049789A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020000079077A KR20020049789A (ko) 2000-12-20 2000-12-20 파워피시 마이크로프로세서에서 실행되는 병행 프로그램디버깅을 위한 스태핑 제어방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000079077A KR20020049789A (ko) 2000-12-20 2000-12-20 파워피시 마이크로프로세서에서 실행되는 병행 프로그램디버깅을 위한 스태핑 제어방법

Publications (1)

Publication Number Publication Date
KR20020049789A true KR20020049789A (ko) 2002-06-26

Family

ID=27683741

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000079077A KR20020049789A (ko) 2000-12-20 2000-12-20 파워피시 마이크로프로세서에서 실행되는 병행 프로그램디버깅을 위한 스태핑 제어방법

Country Status (1)

Country Link
KR (1) KR20020049789A (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990050368A (ko) * 1997-12-17 1999-07-05 이계철 교차 디버깅 서버에서 프로세스 실행제어 서비스 실현방법
US5933639A (en) * 1996-05-17 1999-08-03 International Business Machines Corporation System and method for debugging distributed programs
US6042614A (en) * 1995-03-03 2000-03-28 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US6061643A (en) * 1998-07-07 2000-05-09 Tenfold Corporation Method for defining durable data for regression testing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6042614A (en) * 1995-03-03 2000-03-28 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US5933639A (en) * 1996-05-17 1999-08-03 International Business Machines Corporation System and method for debugging distributed programs
KR19990050368A (ko) * 1997-12-17 1999-07-05 이계철 교차 디버깅 서버에서 프로세스 실행제어 서비스 실현방법
US6061643A (en) * 1998-07-07 2000-05-09 Tenfold Corporation Method for defining durable data for regression testing

Similar Documents

Publication Publication Date Title
US6708326B1 (en) Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence
US5732210A (en) Use of dynamic translation to provide fast debug event checks
US7428727B2 (en) Debugging techniques in a multithreaded environment
US5740413A (en) Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
US6681280B1 (en) Interrupt control apparatus and method separately holding respective operation information of a processor preceding a normal or a break interrupt
KR950006616B1 (ko) 변환된 프로그램 코드에서 소스 명령 분자를 보전하기 위한 시스템 및 방법
US6263489B1 (en) Method and apparatus for debugging of optimized code
US5621886A (en) Method and apparatus for providing efficient software debugging
US6434741B1 (en) Method and apparatus for debugging of optimized code using emulation
US7950001B2 (en) Method and apparatus for instrumentation in a multiprocessing environment
US8745596B2 (en) Program debugging with dynamically inserted instrumentation
US20050268195A1 (en) Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems
US8661417B2 (en) Debugging program function
US6330691B1 (en) Use of dynamic translation to provide breakpoints in non-writeable object code
EP0638864B1 (en) Development support system for microcomputer with internal cache
Koju et al. An efficient and generic reversible debugger using the virtual machine based approach
US5963741A (en) Information processor which rewrites instructions in program to dynamically change program structure and method therefor
US20060174248A1 (en) Software tool for automatically protecting shared resources within software source code
JPH1196006A (ja) 情報処理装置
KR20020049789A (ko) 파워피시 마이크로프로세서에서 실행되는 병행 프로그램디버깅을 위한 스태핑 제어방법
WO2024069730A1 (ja) デバッグ装置及びデバッグ方法
KR920003909B1 (ko) 디버깅지원회로
JPH05108404A (ja) デバツガシステム
JP2001222447A (ja) 実動作環境下のデバッグ方法及びデバッグ対象装置
JP2658982B2 (ja) 特定命令実行検出方式

Legal Events

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