KR20080044652A - Cpu에서의 스택을 이용한 디버깅 방법 - Google Patents

Cpu에서의 스택을 이용한 디버깅 방법 Download PDF

Info

Publication number
KR20080044652A
KR20080044652A KR1020060113943A KR20060113943A KR20080044652A KR 20080044652 A KR20080044652 A KR 20080044652A KR 1020060113943 A KR1020060113943 A KR 1020060113943A KR 20060113943 A KR20060113943 A KR 20060113943A KR 20080044652 A KR20080044652 A KR 20080044652A
Authority
KR
South Korea
Prior art keywords
register
memory
entry
value
cpu
Prior art date
Application number
KR1020060113943A
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 KR1020060113943A priority Critical patent/KR20080044652A/ko
Publication of KR20080044652A publication Critical patent/KR20080044652A/ko

Links

Images

Classifications

    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

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

Abstract

본 발명은 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅하기 위한 것으로, 이를 위한 본 발명은, 메모리로의 명령 수행인 경우, 메모리에 저장된 데이터의 변화가 있을 때마다 변화된 메모리 엔트리를 다수의 실행 코드를 통해 제공받아 스택에 기록하는 과정과, 레지스터로의 명령 수행인 경우, 레지스터의 변화가 있을때마다 변화된 레지스터 엔트리를 스택에 기록하는 과정과, CPU에서 에러가 발생될 경우, 스택에 저장된 에러가 발생되기 바로 이전 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 메모리 혹은 레지스터의 값을 변화되기 이전으로 디버깅하는 과정을 포함한다. 따라서, 프로그래밍할 때에 위험한 시도를 하는 코드를 작성했다가 문제가 발생하더라도 원활하게 디버깅을 수행할 수 있는 효과가 있다.
CPU, 메모리, 스택, 레지스터, 코어

Description

CPU에서의 스택을 이용한 디버깅 방법{METHOD FOR DEBUGGING BY USING STACK OF CPU}
도 1은 본 발명에 따른 CPU에서의 스택을 이용한 디버깅 방법을 수행하기 위한 블록 구성도,
도 2는 본 발명의 바람직한 실시예에 따른 CPU에서의 스택을 이용한 디버깅 방법에 대한 상세 흐름도.
<도면의 주요부분에 대한 부호의 설명>
101 : 메모리 1011-0,...,1011-n : INS 0,..., INS n
1013 : 데이터부 103 : CPU
1031 : 코어 1033 : 레지스터
1035 : 스택(Stack) 1037 : 디버깅부
본 발명은 중앙 처리 장치(Central Processing Unit, CPU)에서의 스택을 이용한 디버깅 방법에 관한 것으로, 보다 상세하게는 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상 황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅할 수 있는 방법에 관한 것이다.
주지된 바와 같이, CPU는 컴퓨터 및 각종 전자제품 등의 시스템 전체를 제어하는 장치로서, 다양한 입력장치로부터 자료를 받아서 처리한 후 그 결과를 출력장치로 보내는 일련의 과정을 제어하고 조정하는 일을 수행한다.
이러한 CPU는 비교, 판단, 연산을 담당하는 논리연산장치(arithmetic logic unit)와 명령어의 해석과 실행을 담당하는 제어장치(control unit)로 구성된다. 논리연산장치(ALU)는 각종 덧셈을 수행하고 결과를 수행하는 가산기(adder)와 산술과 논리연산의 결과를 일시적으로 기억하는 레지스터인 누산기(accumulater), 중앙처리장치에 있는 일종의 임시 기억장치인 레지스터(register) 등으로 구성되어 있다.
더불어, 제어장치는 프로그램의 수행 순서를 제어하는 프로그램 계수기(program counter), 현재 수행중인 명령어의 내용을 임시 기억하는 명령 레지스터(instruction register), 명령 레지스터에 수록된 명령을 해독하여 수행될 장치에 제어신호를 보내는 명령해독기(instruction decoder)로 이루어져 있다. 즉, CPU는 외부 메모리(예컨대, RAM, ROM,.. 등)에 연결되어 메모리내 데이터부에 저장된 각종 데이터의 코드를 읽어와서 기계어 명령(Instruction)을 실행하는 것이다.
그러나, 상술한 바와 같이 구성된 CPU가 메모리에 저장된 데이터의 코드를 읽어와서 기계어 명령을 실행하는 중에 원하지 않는 상황, 즉 에러가 발생될 경우 해당 작업의 실행이 갑자기 중지됨에 따라 CPU의 상태를 재부팅하여 처음부터 다시 진행해야 하므로, 에러가 발생되기 바로 이전 메모리 값 및 레지스터 값의 변화를 기억하고 있지 못하여 결국 비정상적으로 디버깅을 수행할 수 밖에 없는 문제점을 갖는다.
이에, 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로, 그 목적은 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅할 수 있는 CPU에서의 스택을 이용한 디버깅 방법을 제공함에 있다.
상술한 목적을 달성하기 위한 본 발명에서 CPU에서의 스택을 이용한 디버깅 방법은 메모리로의 명령 수행인 경우, 메모리에 저장된 데이터의 변화가 있을 때마다 변화된 메모리 엔트리를 다수의 실행 코드를 통해 제공받아 스택에 기록하는 과정과, 레지스터로의 명령 수행인 경우, 레지스터의 변화가 있을때마다 변화된 레지스터 엔트리를 스택에 기록하는 과정과, CPU에서 에러가 발생될 경우, 스택에 저장된 에러가 발생되기 바로 이전 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 메모리 혹은 레지스터의 값을 변화되기 이전으로 디버깅하는 과정을 포함하는 것을 특징으로 한다.
이하, 본 발명의 실시 예는 다수개가 존재할 수 있으며, 이하에서 첨부한 도면을 참조하여 바람직한 실시 예에 대하여 상세히 설명하기로 한다. 이 기술 분야의 숙련자라면 이 실시 예를 통해 본 발명의 목적, 특징 및 이점들을 잘 이해하게 될 것이다.
도 1은 본 발명에 따른 CPU에서의 스택을 이용한 디버깅 방법을 위한 개략적인 블록 구성도로서, 다수의 실행 코드인 INS 0,..., INS n(1011-0,...,1011-n) 및 각종 데이터를 저장하고 있는 데이터부(1013)를 갖는 메모리(101)와, 메모리(101)와 스택(1035)간에 위치하여 메모리(101) 변화 값의 엔트리를 스택(1035)에 기록하도록 제공하는 코어(1031)와, 산술과 논리연산의 결과를 일시적으로 기억하고 있다가 레지스터(1033) 변화 값의 엔트리를 스택(1035)에 제공하는 레지스터(1033)와, 코어(1035)를 통해 제공되는 메모리(101) 변화 값의 엔트리 혹은 레지스터(1033) 변화 값의 엔트리를 기록하고 있다가 공간이 꽉 차게되면 가장 오래 전에 기록된 엔트리를 지워 새로운 엔트리가 기록될 공간을 확보하는 스택(1035)과, 원하지 않는 상황 즉 에러가 발생될 경우, 에러가 발생되기 바로 이전 메모리(101) 변화 값의 엔트리 혹은 레지스터(1033) 변화 값의 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 메모리(101) 혹은 레지스터(1033)의 값을 변화되기 이전으로 디버깅을 수행하는 디버깅부(1037)를 갖는 CPU(103)를 포함한다.
다음에, 상술한 바와 같은 구성을 갖는 본 실시 예의 CPU에서의 스택을 이용한 디버깅 과정에 대하여 설명한다.
도 2는 본 발명의 바람직한 실시 예에 따라 CPU에서의 스택을 이용한 디버깅 과정을 순차적으로 도시한 흐름도이다.
먼저, CPU(103)는 내부에 일정량의 스택(1035)을 갖고 있으며, 메모리(101)로의 명령 수행인지 아니면 레지스터(1033)로의 명령 수행인지를 판단한다(S201).
상기 판단(S201)결과, 메모리(101)로의 명령 수행인 경우, 메모리(101)내 데이터부(1013)에 저장된 데이터의 변화가 있을 때마다 변화된 기억장소 위치와 변화전의 값과 변화후의 값인 세가지 값으로 이루어진 엔트리(예컨대, 도 1의 스택내에 저장된 MEM 00xx, 35, 27)를 다수의 실행 코드인 INS 0,..., INS n(1011-0,...,1011-n)로부터 코어(1031)를 통해 제공받아 스택(1035)에 기록한다(S203).
상기 판단(S201)결과, 레지스터(1011)로의 명령 수행인 경우, 레지스터(101)의 주소와 변화전의 값과 변화후의 값인 세가지 값으로 이루어진 엔트리(예컨대, 도 1의 스택내에 저장된 REG 0x, 2A, 9B)를 스택(1035)에 기록한다(S205).
한편, CPU(103)는 원하지 않는 상황 즉 에러가 발생될 경우(S207), 디버깅부(1037)를 실행시킨다(S209).
그러면, 디버깅부(1037)는 스택(1035)에 저장된 에러가 발생되기 바로 이전 메모리(101) 변화 값의 엔트리 혹은 레지스터(1033) 변화 값의 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 메모리(101) 혹은 레지스터(1033)의 값을 변화되기 이전으로 디버깅을 수행한다(S211).
따라서, 본 발명은 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅함으로써, 프로그래밍할 때에 위험한 시도를 하는 코드를 작성했다가 문제가 발생하더라도 원활하게 디버깅을 수행할 수 있다.
상기에서 설명한 바와 같이, 본 발명은 CPU에서 일정량 만큼의 메모리 값 혹은 레지스터 값의 변화를 스택(Stack)에 기록한 다음에, 원하지 않는 돌발 상황이 발생될 경우 가장 최근에 기록된 값을 역순으로 복원하면서 디버깅함으로써, 프로그래밍할 때에 위험한 시도를 하는 코드를 작성했다가 문제가 발생하더라도 원활하게 디버깅을 수행할 수 있는 효과가 있다.

Claims (3)

  1. 메모리와 레지스터 각각으로 명령을 수행하는 CPU에서의 스택을 이용한 디버깅 방법으로서,
    (a) 상기 메모리로의 명령 수행인 경우, 상기 메모리에 저장된 데이터의 변화가 있을 때마다 변화된 메모리 엔트리를 다수의 실행 코드를 통해 제공받아 상기 스택에 기록하는 과정과,
    (b) 상기 레지스터로의 명령 수행인 경우, 상기 레지스터의 변화가 있을때마다 변화된 레지스터 엔트리를 상기 스택에 기록하는 과정과,
    (c) 상기 CPU에서 에러가 발생될 경우, 상기 스택에 저장된 에러가 발생되기 바로 이전 엔트리를 이용하여 가장 최근에 들어온 것부터 읽어나가면서 상기 메모리 혹은 레지스터의 값을 변화되기 이전으로 디버깅하는 과정
    을 포함하는 CPU에서의 스택을 이용한 디버깅 방법.
  2. 제 1 항에 있어서,
    상기 (a) 과정의 메모리 엔트리는, 상기 메모리 기억장소 위치와 변화전의 값과 변화후의 값으로 이루어진 것을 특징으로 하는 CPU에서의 스택을 이용한 디버깅 방법.
  3. 제 1 항에 있어서,
    상기 (b) 과정의 레지스터 엔트리는, 상기 레지스터 기억장소 위치와 변화전의 값과 변화후의 값으로 이루어진 것을 특징으로 하는 CPU에서의 스택을 이용한 디버깅 방법.
KR1020060113943A 2006-11-17 2006-11-17 Cpu에서의 스택을 이용한 디버깅 방법 KR20080044652A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060113943A KR20080044652A (ko) 2006-11-17 2006-11-17 Cpu에서의 스택을 이용한 디버깅 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060113943A KR20080044652A (ko) 2006-11-17 2006-11-17 Cpu에서의 스택을 이용한 디버깅 방법

Publications (1)

Publication Number Publication Date
KR20080044652A true KR20080044652A (ko) 2008-05-21

Family

ID=39662470

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060113943A KR20080044652A (ko) 2006-11-17 2006-11-17 Cpu에서의 스택을 이용한 디버깅 방법

Country Status (1)

Country Link
KR (1) KR20080044652A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106293999A (zh) * 2015-06-25 2017-01-04 深圳市中兴微电子技术有限公司 一种微引擎处理报文中间数据快照功能的实现方法及装置
CN113377593A (zh) * 2021-06-29 2021-09-10 厦门紫光展锐科技有限公司 Cpu失效位置的定位分析方法及相关产品

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106293999A (zh) * 2015-06-25 2017-01-04 深圳市中兴微电子技术有限公司 一种微引擎处理报文中间数据快照功能的实现方法及装置
CN106293999B (zh) * 2015-06-25 2019-04-30 深圳市中兴微电子技术有限公司 一种微引擎处理报文中间数据快照功能的实现方法及装置
US11010277B2 (en) 2015-06-25 2021-05-18 Sanechips Technology Co., Ltd. Method and device for realizing snapshot function of micro-engine processing packet intermediate data
CN113377593A (zh) * 2021-06-29 2021-09-10 厦门紫光展锐科技有限公司 Cpu失效位置的定位分析方法及相关产品

Similar Documents

Publication Publication Date Title
JP4703718B2 (ja) 選択的サブルーチンリターン構造
KR101782313B1 (ko) 예외 이벤트 처리 장치 및 방법
JP5611756B2 (ja) プログラム・フロー制御
JPH07248897A (ja) コンピュータ・システムにおける例外からの回復方法、及びそのための装置
WO2002048887A2 (en) Single-step processing
JP2008009721A (ja) 評価システム及びその評価方法
US6925522B2 (en) Device and method capable of changing codes of micro-controller
US20050060690A1 (en) Microprocessor system with software emulation processed by auxiliary hardware
CN111625328A (zh) 适用于risc-v架构的中断装置、***及方法
KR20080044652A (ko) Cpu에서의 스택을 이용한 디버깅 방법
US8484446B2 (en) Microprocessor saving data stored in register and register saving method
US7353343B2 (en) Memory management system for preventing program execution when CPU fetches execution code from unoccupied region of memory
JP2009230479A (ja) マイクロプロセッサ
JP2001306334A (ja) エミュレーション装置
KR100525537B1 (ko) 인터럽트를 이용한 응용 프로그램의 에러검출장치 및 방법.
JP2731047B2 (ja) プログラムのオペランドチェック方式
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JPH1011315A (ja) インサーキットエミュレータ装置およびインサーキットエミュレーション方法
WO2024029174A1 (ja) ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム記録媒体
JPH0535499A (ja) データ処理装置及びデータ処理方法
KR960029969A (ko) 파이프라인 처리기능을 갖는 데이타프로세서
JPH0484224A (ja) スタックエリア保護回路
CN117724938A (zh) 存储器的控制方法
CN114064478A (zh) 生成验证用例的方法及装置
JPH1055289A (ja) デバッグ情報生成回路、およびそれを用いた情報処理装置

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination