반응형

6.8> 디버깅에 필요한 정보를 저장하는 Trace 클래스를 만들어보자. 저자의 경험에 의하면 멀티태스크 프로그램을 개발하거나 특별한 환경에서 작업할 때, Visual Studio의 디버거와 같은 소스 레벨 디버거를 사용하지 못하는 경우가 더러 있었고, 이때 실행 도중 정보를 저장하기 위해 Trace 클래스를 만들어 사용하였다. Trace 클래스를 활용하는 다음 프로그램과 결과를 참고하여 Trace 클래스를 작성하고 전체 프로그램을 완성하라. 디버깅 정보는 100개로 제한한다.

<코드>

#include <iostream>

#include <string>

using namespace std;

 

class Trace{

private:

        static int num; //카운터로 사용할 변수

        static string func[100]; //함수 이름이 들어갈 스트링 배열

        static string debug[100]; //디버깅 내용이 들어갈 스트링 배열

public:

        static void put(string funcname,string s);

        static void print(string cmp);

        static void print();

};

int Trace::num=0; //스태틱 멤버 변수는 클래스 밖에서 메모리를 할당하는 전역 변수 선언문을 작성해야 한다.

string Trace::func[100];

string Trace::debug[100];

 

void Trace::put(string funcname,string s){ //num 해당하는 index 함수 이름과 디버깅 내용을 넣어준다.

        func[num]=funcname;

        debug[num]=s;

        num++; //카운터 하나 증가

}

void Trace::print(string cmp){

        cout<<cmp<<"태그의 Trace 정보를출력합니다.-----"<<endl;

        for(int i=0;i<num;i++){ //카운터만큼 반복한다.

               if(func[i]==cmp) //함수이름과 cmp 같으면 함수 이름과 디버깅 내용 출력

                       cout<<func[i]<<" : "<<debug[i]<<endl;

        }

}

void Trace::print(){

        cout<<"----모든 Trace 정보를출력합니다.-----"<<endl;

        for(int i=0;i<num;i++){ //카운터 만큼 반복

                       cout<<func[i]<<" : "<<debug[i]<<endl;

        }

}

 

void f(){ //a+b c 대입, 자취 2 생성

        int a,b,c;

        cout<<" 개의 정수를 입력하세요>>";

        cin>>a>>b; //a,b 입력 받아서

        Trace::put("f()", "정수를 입력 받았음");

        c=a+b; //c 대입후

        Trace::put("f()", " 계산");

        cout << "합은 " <<c<<endl; //출력

}

 

int main(void){

        Trace::put("main()", "프로그램 시작합니다");

        f();

        Trace::put("main()", "종료");

        Trace::print("f()");

        Trace::print();

        return 0;

}

<결과창>

        

                           


반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C++' 카테고리의 다른 글

Matrix class 활용, 연산자 오버로딩  (0) 2017.12.25
Matrix class  (0) 2017.12.25
Random 클래스  (0) 2017.12.25
배열 빼기  (0) 2017.12.25
동일한 크기의 배열  (0) 2017.12.25

+ Recent posts