VioletaBabel

170904 디버깅 본문

카테고리 없음
170904 디버깅
Beabletoet 2017. 9. 4. 15:47

ToString 메소드 오버라이드


//클래스 안에서


public override string ToString ()
{

return string.Format("Class AAA Name : {0} | Id : {1} | Number : {2}", name, id, num);

}


Void Start()

{

Debug.Log (ToString());

}



//같은 식으로 재정의해서 사용 가능하다.

//String.Format은 서로 다른 문자와 값들을 포함하는 문자열을 한 줄로 만들 때 유용하다.



--

플래그를 이용하여 디버그 한번에 켜고 끄기


//디버그 절과 코드 절을 분리해둔다.

Void Start()

{

#if SHOW_DEBUG_MESSAGES

Debug.Log ("ToString());

#endif



//이 부분은 SHOW_DEBUG_MESSAGES 유무에 상관없이 실행된다.

Debug.Log("Start");

}


// Edit-Project Settings-Player를 선택한 후, Scripting Define Symbols 필드에 SHOW_DEBUG_MESSAGES를 입력 후 엔터를 치면 디버그 절이 활성화된다.


// 복수의 선언은 ;로 구분해 넣으면 되고, 선언을 제거하려면 이름 앞에 /를 넣으면 제거가 되기 때문에 재활성화할 일이 있을 것 같을 때는 /를 붙여넣자.



--

기즈모 관련 부분은 별로 안써봐서 이해가 안되니 나중에 다시 볼 것 (92p부터임)



--

오류 기록


테스터가 로그 파일을 보내 개발자의 오류 추적을 돕게 할 수 있다.


public class -생략

{

private System.IO.StreamWriter SW; // StreamWriter 내부 참조변수

public string LogFileName = "log.txt";


void Start()
{

DontDestroyOnLoad(gameObject); // 오브젝트를 파괴하지 않고 유지

SW = new System.IO.StreamWriter(Application.persistentDataPath + "/" + LogFileName); // 문자열 기록 오브젝트 생성

Debug.Log(Application.persistentDataPath + "/" + LogFileName);

}


//예외를 받아 기록하도록 등록

void OnEnable()

{

Application.RegisterLogCallback(HandleLog); // 오류 발생시 HandleLog 함수 실행 (델리게이트 이용)

}


//예외 수신 등록 해제

void OnDisable()

{

Application.RegisterLogCallback(null);

}


//예외를 파일로 기록

void HandleLog(string logString, string stackTrace, LogType type)

{

if(type == LogType.Exception || type == LogType.Error)

{

SW.WriteLine("Logged : " + System.DateTime.Now.ToString() + "/" + logString + "/" + stackTrace + "/" + type.ToString());

}

}


//오브젝트 파괴시 호출

void OnDestroy()

{

SW.Close();

}

}



--

델리게이트란?


변수를 만들고 함수에 대한 참조를 할당 시, 변수를 불러서 함수처럼 함수의 참조를 호출 가능해짐.

새 함수나 기존 함수에 대한 참조를 후에 다시 할당할 수도 있음.



--
프로파일러는 집에 유니티가 프로버전이 아니므로 생략.



--

모노디벨롭도 비주얼쓰므로 생략. (다만 나중에 따로 해보긴 하자)

Comments