Visual Studio의 출력 창에 쓰기
디버깅 목적으로 출력 창에 메시지를 쓰려고합니다. Java와 같은 기능을 검색했습니다 system.out.println("")
. 나는 시도 Debug.Write
, Console.Write
및 Trace.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 네임 스페이스 만 작동했습니다.
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를 사용할 수 없었을 때 콘솔 출력을 쉽게 사용할 수있었습니다. 예약 된 작업으로 실행될 때 동일한 메시지를 파일 (또는 다른 종류의 싱크)에 기록 할 수도 있습니다.
결론은 Serilog를 사용하여 여러 대상에 메시지를 덤프하는 것이 매우 쉬워서 실행 방법에 관계없이 항상 출력에 쉽게 액세스 할 수 있다는 것입니다.
또한 최소한의 설정 및 코드가 필요합니다.
이것은 원래 질문에 대한 답변이 아닙니다. 그러나 대화 형으로 객체 데이터를 덤프하는 방법을 검색 할 때이 질문을 찾았으므로 다른 사람들 이이 유용한 대안을 언급하면 도움이 될 수 있다고 생각했습니다.
궁극적으로 명령 창을 사용하고 Debug.Print
아래와 같이 명령을 입력했습니다 . 이것은 텍스트로 복사 할 수있는 형식으로 메모리 객체를 인쇄했는데 실제로 필요한 것입니다.
> Debug.Print <item>
id: 1
idt: null
igad: 99
igbd: 99
gl_desc: "New #20"
te_num: "1-001-001-020"
다음은 Visual Studio 2015에서 나를 위해 일했습니다.
OutputDebugStringW(L"Write this to Output window in VS14.");
여기서 OutputDebugStringW에 대한 문서를 읽으 십시오 .
이 방법은 코드를 디버깅하는 경우에만 작동합니다 ( debug mode
).
Visual Studio의 출력 창으로 인쇄하십시오.
Debug.Writeline();
디버깅 목적으로 System.Diagnostics.Debug.Writeline()
디버그 리스너가 없으면 명령이 릴리스 버전의 코드로 컴파일되지 않습니다. 디버그 모드에서 실행될 때 VS 출력 창을 포함하는 모든 추적 리스너에 씁니다.
콘솔 응용 프로그램의 경우. Console.Writeline()
작동하지만 출력은 바이너리 버전의 릴리스에서 여전히 생성됩니다.
테스트를 디버깅 할 때 디버그 출력도 일반 출력 창에 나타납니다. 반면에 console.writeline 출력은 그렇지 않지만 테스트 출력 창에서 찾을 수 있습니다.
참고 URL : https://stackoverflow.com/questions/9466838/writing-to-output-window-of-visual-studio
'IT story' 카테고리의 다른 글
파이썬 3의 상대적 수입 (0) | 2020.02.09 |
---|---|
Math.round (0.49999999999999994)가 1을 반환하는 이유는 무엇입니까? (0) | 2020.02.09 |
C # 목록 (0) | 2020.02.09 |
대시를 제외한 문자열에서 영숫자가 아닌 문자를 모두 제거하려면 어떻게합니까? (0) | 2020.02.09 |
PHP에서 선행 0으로 숫자 서식 지정 (0) | 2020.02.09 |