Development Tip

Visual Studio의 출력 창에 쓰기

yourdevel 2020. 10. 3. 12:03
반응형

Visual Studio의 출력 창에 쓰기


디버깅 목적으로 출력 창에 메시지를 쓰려고합니다. Java와 같은 기능을 검색했습니다 system.out.println(""). 나는 시도 Debug.Write, Console.WriteTrace.Write. 오류가 발생하지는 않지만 아무것도 인쇄하지 않습니다.

"DEBUG 상수 정의"및 "TRACE 상수 정의"옵션이 선택됩니다.

메뉴 도구옵션디버깅"모든 출력 창 텍스트를 직접 실행 창으로 리디렉션" 옵션이 선택되어 있지 않습니다.

구성 : 활성 (디버그)

참고 : 필요한 경우 마법사를 사용하여 "Windows Forms 응용 프로그램"으로 프로젝트를 만들었습니다. 어디를 봐야할지 모르겠어요.


System.Diagnostics네임 스페이스를 추가 한 다음 Debug.WriteLine()IDE의 출력 창에 메시지를 빠르게 인쇄하는 데 사용할 수 있습니다 . 자세한 내용은 다음을 참조하십시오.


디버그 출력 창에 기록됩니다.

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");

사용하다:

System.Diagnostics.Debug.WriteLine("your message here");

Debug.WriteLine

당신이 찾고있는 것입니다.

그렇지 않은 경우 다음을 시도하십시오.

메뉴 도구옵션디버깅즉시 출력 보내기를 선택 취소 합니다.


나를 위해 Trace 네임 스페이스 작동하고 Debug 네임 스페이스는 작동하지 않았습니다.

System.Diagnostics.Trace.WriteLine("message");

저는 Visual Studio 2010에서 C # 프로젝트에서 일하고 있습니다.


당신은 찾고있을 수 있습니다

MessageBox.Show()

또는

Debug.Writeline()

호출

System.Diagnostics.Debug.WriteLine("message");

.NET Core (V 1.0 또는 1.1)로 작업 할 때 실패합니다 .

에서 로거를 만들고 사용하도록되어 Microsoft.Extensions.Logging있지만 해당 로그는 Visual Studio의 출력 창이 아닌 dotnet.exe 팝업 콘솔 창에만 나타납니다.


이것은 써드 파티 프레임 워크, 즉 Serilog 가 필요하지만, 그럼에도 불구하고 내가 볼 수있는 곳으로 출력을 가져 오는 데있어 매우 부드러운 경험 이라는 것을 알았 습니다.

먼저 Serilog의 Trace sink 를 설치해야합니다 . 설치가 완료되면 다음과 같이 로거를 설정해야합니다.

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(다른 최소 수준을 설정하거나 구성 값이나 일반 Serilog 기능 중 하나로 설정할 수 있습니다. 또한 Trace로거를 특정 수준으로 설정하여 구성을 재정의하거나 원하는대로 설정할 수 있습니다.)

그런 다음 메시지를 정상적으로 기록하면 출력 창에 표시됩니다.

Logger.Information("Did stuff!");

이것은 그렇게 큰 문제가 아닌 것 같으므로 몇 가지 추가 이점을 설명하겠습니다. 저에게 가장 큰 것은 출력 창과 콘솔에 동시에 로그인 할 수 있다는 것입니다 .

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

이로 인해 모든 호출을 Console.Write으로 복제 할 필요없이 출력을 소비하는 방식에있어 큰 유연성을 얻었습니다 Debug.Write. 코드를 작성할 때 출력을 잃을 염려없이 Visual Studio에서 명령 줄 도구를 실행할 수있었습니다. 이를 배포하고 디버깅해야 할 때 (그리고 Visual Studio를 사용할 수 없었을 때) 콘솔 출력을 즉시 사용할 수있었습니다. 예약 된 작업으로 실행될 때 동일한 메시지가 파일 (또는 다른 종류의 싱크)에 기록 될 수도 있습니다.

The bottom line is that using Serilog to do this made it really easy to dump messages to a multitude of destinations, ensuring I could always readily access the output regardless of how I ran it.

It also requires very minimal set up and code.


This is not an answer to the original question. But since I found this question when searching for a means of interactively dumping object data, I figured others may benefit from mentioning this very useful alternative.

I ultimately used the Command Window and entered the Debug.Print command, as shown below. This printed a memory object in a format that can be copied as text, which is all I really needed.

> Debug.Print <item>

  id: 1
  idt: null
  igad: 99
  igbd: 99
  gl_desc: "New #20"
  te_num: "1-001-001-020"

The following worked for me in Visual Studio 2015:

OutputDebugStringW(L"Write this to Output window in VS14.");

Read the documentation for OutputDebugStringW here.

enter image description here Note that this method only works if you are debugging your code (debug mode)


Print to the output window of the Visual Studio:

Debug.Writeline();

For debugging purposes, the System.Diagnostics.Debug.Writeline() command will not be compiled into the release version of your code unless you have debug listeners. It writes to all trace listeners which includes the VS output window when running in Debug mode.

For a Console application. Console.Writeline() would work but the output would still be generated in the release version of your binary.

Debug output should also appear in the normal output window when debugging tests; whereas, console.writeline output does not (but can be found in the test output window.)

참고URL : https://stackoverflow.com/questions/9466838/writing-to-output-window-of-visual-studio

반응형