2017. 4. 22. 15:30

디버그(Debug) 클래스와 트레이스(Trace) 클래스는 비슷한 기능을 가지고 있는 클래스입니다.

이 클래스들의 차이를 알아봅시다.

 

 

1. 디버그(Debug) 클래스

디버그 클래스는 조건부 컴파일 기호가 'DEBUG'일때만 동작하는 클래스입니다.

닷넷을 처음 배우면 'Debug.WriteLine("Hello World")'를 찍어보는 코드를 보는 경우가 많아서 익숙한 코드죠.

 

디버그 모드에서만 표시해야 하는 로그나 편의 기능들이 들어 있습니다.

자세한 내용은 MSDN을 참고하는 것이 좋습니다.

참고 : MSDN - Debug 클래스

 

'Assert'와 같이 메시지가 표시되는 기능들은 중단점 처럼 사용할 수 있습니다.

 

 

2. 트레이스(Trace) 클래스

조건부 컴파일 기호와 상관없이 동작하는 클래스입니다.

많은 기능이 디버그 클래스와 같지만 이 클래스는 조건 없이 동작합니다.

모니터링 용도로 많이 쓰입니다.

 

자세한 내용은 MSDN을 참고해 주세요.

참고 : Trace 클래스

 

릴리즈(Release)에서 'Assert'와 같이 메시지를 표시해주는 기능을 사용하는 경우 메시지는 정상적으로 표시되지만 코드 추적은 되지 않습니다.

프로그램을 강제로 죽이지 않습니다.

 

 

3. 테스트

간단하게 콘솔이나 윈폼 프로젝트를 생성하고 다음 코드를 넣고 테스트 해봅시다.

Debug.WriteLine(string.Format("디버그 로그 입니다."));
Trace.WriteLine(string.Format("트레이스 로그 입니다."));

 

릴리즈 모드와 디버깅 모드를 바꿔가며 테스트하면 아래처럼 출력 됩니다.

 

 

마무리

간단하게 두 기능의 차이가 무엇인지 알아봤습니다.

내용이 너무 간단해서 샘플프로젝트도 없습니다 ㅎㅎㅎ

 

기능은 간단해도 이 두개를 잘 활용하면 유지보수에 큰 도움이 됩니다.

참고 : HOWTO: Visual C# .NET에서 Trace 및 Debug 사용