developer tip

Console.WriteLine ()과 Debug.WriteLine ()의 차이점은 무엇입니까?

copycodes 2020. 10. 5. 08:06
반응형

Console.WriteLine ()과 Debug.WriteLine ()의 차이점은 무엇입니까?


vs 의 차이점은 무엇입니까 ?Console.WriteLine()Debug.WriteLine()


Console.WriteLine 은 디버그 또는 릴리스에서 표준 출력 스트림에 씁니다. Debug.WriteLineListeners 컬렉션 의 추적 수신기에 기록 하지만 디버그에서 실행할 때만 기록합니다 . 릴리스 구성에서 응용 프로그램을 컴파일하면 Debug 요소가 코드로 컴파일되지 않습니다.

으로 Debug.WriteLine의 모든 추적 수신기에 쓰기 청취자의 수집, 그것은이 이상 한 장소에서 출력 할 수있다 (Visual Studio를 출력 창, 콘솔, 로그 파일, 타사 응용 프로그램이 리스너를 등록하는 (나는 생각 DebugView와는 이 작업을 수행 ) 등).


Console.WriteLine()콘솔 모드 프로그램을 의미합니다. Visual Studio 호스팅 프로세스의 멋진 기능은 콘솔이없는 프로세스를 디버깅하는 동안 Visual Studio 출력 창에 출력이 표시되도록합니다. 이는 디버깅하는 동안 매우 유용하지만 #ifdef DEBUG릴리스 빌드를 만들 준비가되면 이 코드를 제거 (또는로 래핑)해야합니다 . 그렇지 않으면 프로그램에 불필요한 오버 헤드가 추가됩니다. 이로 인해 디버그 추적에 적합하지 않습니다.

Debug.WriteLine()DEBUG#defined 조건부로 빌드하면 추적 정보를 생성합니다 . 디버그 빌드에서 기본적으로 켜져 있습니다. 출력이 끝나는 위치는 app.exe.config파일 에서 구성 할 수 있습니다 . 이 구성이 재정의되지 않은 경우 .NET은 자동으로 DefaultTraceListener클래스 의 인스턴스를 제공합니다 . Debug.WriteLine()Windows OutputDebugString()API 함수가 있는 텍스트를 디버거로 보냅니다 . Visual Studio 디버거는 출력 창에 Console.WriteLine().

의 분명한 장점은 Debug.WriteLine()릴리스 빌드에서 오버 헤드를 생성하지 않고 호출이 효과적으로 제거된다는 것입니다. 그러나 복합 서식을 지원하지 않으므로 필요 String.Format()합니다. 디버그 추적의 경우 Debug 클래스를 선택해야합니다.


Console.WriteLine 사용 목적이 디버깅 전용 인 경우 Debug.WriteLine을 사용하는 것이 좋습니다 .

사용자에게 메시지를 표시하려면 Console.WriteLine 을 사용 합니다.

Debug.WriteLine은 애플리케이션 디버깅 목적으로 만 사용됩니다. 릴리스 모드에서는 디버그 문이 무시됩니다.

콘솔 애플리케이션의 또 다른 용도는 개인 어셈블리를 테스트하는 것입니다. DLL의 컴파일 된 버전을 테스트하기 위해 일종의 GUI 테스트 도구를 만드는 전통적인 접근 방식 대신 DLL을 콘솔 응용 프로그램으로 다시 빌드하고 콘솔에서 / 로의 입출력을 수행 할 수 있습니다. 이 기술이 GUI 테스트 도구를 만드는 데 시간을 보내는 것보다 빠르다는 것을 알았습니다.

참고 URL : https://stackoverflow.com/questions/3012822/whats-the-difference-between-console-writeline-vs-debug-writeline

반응형