문제
내 코드에 인쇄문을 뿌려서 내가 어디에 있는지 보여주고 중요한 값을 콘솔 창에 인쇄하고 싶습니다.
어떻게해야합니까? 그런 다음 릴리스 버전에서 끄는 방법은 무엇입니까?
해결책
모든 전화 System.Diagnostics.Debug.Print()
릴리스 버전으로 전환하면 제거됩니다.
다른 팁
사용 log4net 릴리스에서 디버그 레벨에서 로깅 및 생산에서 경고 또는 오류 수준.
이점은 개발 중에 재현 할 수없는 문제가있는 경우 릴리스 환경에서 다시 로그인 할 수 있다는 것입니다.
편집] fwiw, 나는 내가 많은 이제 테스트 중심 개발을 사용하므로 디버그 로깅이 적습니다. 내 로깅의 대부분은 경고/오류 다양성입니다.
System.diagnostics.debug 및 System.Diagnostics.Trace 클래스를 참조하십시오.
디버깅 및 추적은 관련이 있지만 뚜렷한 활동입니다. 그만큼 System.Diagnostics
네임 스페이스는 둘 다 지원합니다.
사용 Debug.Write/WriteLine
로그 파일에 디버깅 메시지를 작성합니다. (및 출력 창에.) 사용 Debug.Assert
, 글쎄, 거의 모든 곳에서. 당신이 작성한 모든 코드 Debug
코드에서 디버그 기호를 정의하지 않으면 클래스가 불만 사항 전에 제거됩니다. 이는 디버그 및 릴리스 구성 옵션에서 기본적으로 수행됩니다.
사용 Trace.Write/WriteLine
추적 메시지를 작성합니다. 이러한 방법은 기능적으로 디버그 클래스의 방법과 동일합니다. 차이점은 코드에서 추적 기호를 정의하지 않으면 제거된다는 것입니다.
디버그 및 트레이스 클래스는 또한 다른 클래스의 약간 인기가 많은 인프라를 가지고 있습니다. TextWriterTraceListener
, 이는 응용 프로그램 구성 파일을 편집하여 디스크의 로컬 파일에서 웹 서비스로 웹 서비스로 추적 로그의 출력을 변경하는 것과 같은 으스스한 작업을 수행 할 수 있습니다. 내가 가장 좋아하는 트릭은 a를 구현하는 것입니다 TextWriter
그것은 a에 텍스트를 쓸 수 있습니다 TextBox
, 모든 디버그 및 추적 출력을 UI로 리디렉션하는 데 사용하십시오.
앱 구성 파일에서 플래그를 설정할 수도 있습니다. WriteIf
그리고 WriteLineIf
방법은 존중하지만 내 경험상 그것들은 꽤 다루기 힘들어집니다.
일반적으로, 나는 내 자신의 정적 클래스를 만들면 더 행복합니다. Trace
행동 양식. 이를 통해 UI에서 추적 켜기 및 끄기와 같은 일을 할 수 있습니다. Trace
수업.
마지막으로 : 모든 방법이 시작되고 끝나면 추적과 같은 작업을 수행하도록 앱을 도구 해야하는 경우, 사용하는 도구는 기적적인 PostSharp입니다.
나는 사용한다: system.console.writeline ()
#if DEBUG
System.Console.WriteLine("Message");
#endif
측면 지향 프로그래밍 솔루션을 살펴볼 수도 있습니다. 그들은 이런 종류의 일을 정말 잘합니다. PostSharp를 좋은 구현으로보십시오. 그들의 샘플 코드에는 일반적으로 원하는 것의 예가 포함되어 있습니다.