[C#] System.Diagnostics.Debug.Write 출력은 어디에 나타 납니까?

다음과 같은 C # 프로그램 (로 빌드 됨 csc hello.cs) Hello via Console!은 콘솔과 Hello via OutputDebugStringDebugView 창 에서만 인쇄 됩니다. 그러나 두 System.Diagnostics.*통화 중 하나를 볼 수 없습니다 . 왜 그런 겁니까?

using System;
using System.Runtime.InteropServices;
class Hello {
    [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
    public static extern void OutputDebugString(string message);

    static void Main() {
        Console.Write( "Hello via Console!" );
        System.Diagnostics.Debug.Write( "Hello via Debug!" );
        System.Diagnostics.Trace.Write( "Hello via Trace!" );
        OutputDebugString( "Hello via OutputDebugString" );
    }
}

특별한 명령 행 스위치가 필요할 수 csc있습니까?

개발에 Visual Studio를 사용하지 않고 있으며 이것은 순수한 명령 줄입니다.



답변

다른 사람들이 지적했듯이 이러한 스트림을 읽으려면 리스너를 등록해야합니다. 또한주의 Debug.Write경우 생성만이 기능을 DEBUG하면서 빌드 플래그가 설정되어있는 Trace.Write경우에만 함수한다면 TRACE빌드 플래그가 설정됩니다.

Visual Studio의 프로젝트 속성에서 또는 csc.exe에 다음 인수를 제공 하여 DEBUG및 / 또는 TRACE플래그를 쉽게 설정할 수 있습니다.

/define:DEBUG;TRACE


답변

디버깅하는 동안 System.Diagnostics.Debug.WriteLine출력 창에 표시됩니다 ( Ctrl+ Alt+O )에 컬렉션에 a TraceListener를 추가하여 다른 위치에서 출력 할 호출을 Debug.Listeners지정할 수도 있습니다 Debug.WriteLine.

참고 : 도구옵션디버깅일반Debug.WriteLine 메뉴에서 Visual Studio 옵션 “모든 출력 창 텍스트를 즉시 창으로 리디렉션”이 선택된 경우 호출이 출력 창에 표시되지 않을 수 있습니다 . “표시하려면 도구옵션디버깅 “, “옆에있는 상자를 선택 도구옵션보기 모든 설정 “.


답변

TraceListener콘솔에 표시 되려면를 추가해야합니다 .

TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(writer);

디버그 모드 일 때 Visual Studio 출력 창에도 나타납니다.


답변

Visual Studio에서 디버깅하는 동안 “출력”창 (보기-> 출력)을 표시하십시오. 거기에 표시됩니다.


답변

진단 메시지가 출력 창에 표시됩니다.


답변

debug.write ( “”)를 쓸 때 직접 실행 창 “이 아닌”출력 창에 “코드에서, 그것은에 출력합니다.”

시도해 볼 수 있습니다. “즉시”창을 표시합니다 ( 디버그즉시 ).


답변

내 경우의 해결책은 다음과 같습니다.

  1. 출력 창을 마우스 오른쪽 버튼으로 클릭하십시오.
  2. ‘프로그램 출력’을 확인하십시오