Zapis do okna wyjściowego programu Visual Studio
Próbuję napisać wiadomość do okna wyjściowego w celu debugowania. Szukałem funkcji typu Java system.out.println("")
. Próbowałem Debug.Write
, Console.Write
, i Trace.Write
. Nie daje błędu, ale też niczego nie drukuje.
Opcje"Define debug constant" I "Define TRACE constant" są zaznaczone.
Menu Narzędzia → Opcje → debugowanie → "przekierowanie całego tekstu okna wyjściowego do okna bezpośredniego" opcja nie jest sprawdzone.
Configuration: Active (Debug)
Uwaga: stworzyłem projekt za pomocą kreatora jako" aplikacja Windows Forms", jeśli dotyczy. Nie mam pojęcia, gdzie szukać.
11 answers
Dodaj przestrzeń nazw System.Diagnostics
, a następnie możesz użyć Debug.WriteLine()
, aby szybko wydrukować wiadomość do okna wyjściowego IDE. Aby uzyskać więcej informacji, zapoznaj się z nimi:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 21:18:03
Zostanie to zapisane w oknie wyjściowym debugowania:
using System.Diagnostics;
Debug.WriteLine("Send to debug output.");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-27 14:47:41
Debug.WriteLine
To jest to, czego szukasz.
Jeśli nie, spróbuj to zrobić:
Menu Narzędzia → Opcje → debugowanie → odznacz Wyślij wyjście do natychmiastowego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-17 19:12:49
Dla mnie działała tylko przestrzeń nazw Trace , a nie Debug:
System.Diagnostics.Trace.WriteLine("message");
Pracuję w projekcie C# pod Visual Studio 2010.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 21:21:16
Możesz szukać
MessageBox.Show()
Lub
Debug.Writeline()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 21:20:40
The call
System.Diagnostics.Debug.WriteLine("message");
Nie działa podczas pracy z . Net Core (V 1.0 lub 1.1).
Mamy tworzyć i używać loggera z Microsoft.Extensions.Logging
, ale ten log pojawia się tylko w dotnecie.wyskakujące okno konsoli exe, nie w oknie wyjściowym Visual Studio.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 21:22:39
Wymaga to zewnętrznego frameworka, a mianowicie Serilog , ale mimo to uważam, że jest tobardzo płynne doświadczenie z uzyskiwaniem danych wyjściowych w jakieś miejsce, które mogę zobaczyć.
Najpierw musisz zainstalować Serilog ' s Trace sink . Po zainstalowaniu musisz skonfigurować logger w następujący sposób:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(możesz ustawić inny minimalny poziom lub ustawić go na wartość konfiguracyjną lub dowolną normalną funkcjonalność Serilog. Możesz także ustawić Logger Trace
na określony poziom, aby nadpisać configs, lub jak chcesz to zrobić.)
Następnie po prostu logujesz wiadomości normalnie i pojawiają się w oknie wyjściowym:
Logger.Information("Did stuff!");
To nie wygląda na taką wielką sprawę, więc pozwól mi wyjaśnić kilka dodatkowych korzyści. Największym dla mnie było to, że mogłem jednocześnie logować się zarówno do okna wyjściowego, jak i do konsoli :
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
To dało mi dużą elastyczność w zakresie sposobu, w jaki używałem wyjścia, bez konieczności powielania wszystkich moich połączeń do Console.Write
z Debug.Write
. Podczas pisania kodu mogłem uruchomić narzędzie wiersza poleceń w Visual Studio bez obawy o utratę danych wyjściowych po jego zakończeniu. Kiedy wdrożyłem go i musiałem coś debugować (i nie miałem dostępnego Visual Studio), wyjście konsoli było łatwo dostępne do mojego użytku. Te same wiadomości mogą być również rejestrowane do pliku (lub innego rodzaju zlewu), gdy jest on uruchomiony jako zaplanowane zadanie.
Najważniejsze jest to, że użycie Serilog do tego celu sprawiło, że naprawdę łatwo wysyłaj wiadomości do wielu miejsc docelowych, zapewniając zawsze łatwy dostęp do danych wyjściowych niezależnie od tego, jak je uruchomiłem.
Wymaga również bardzo minimalnej konfiguracji i kodu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-04 22:25:04
To nie jest odpowiedź na pierwotne pytanie. Ale ponieważ znalazłem to pytanie podczas poszukiwania sposobu interaktywnego dumpingu danych obiektowych, pomyślałem, że inni mogą skorzystać z wymieniając tę bardzo przydatną alternatywę.
Ostatecznie użyłem okna poleceń i wpisałem polecenie Debug.Print
, Jak pokazano poniżej. To wydrukowało obiekt pamięci w formacie, który można skopiować jako tekst, który jest wszystkim, czego naprawdę potrzebowałem.
> Debug.Print <item>
id: 1
idt: null
igad: 99
igbd: 99
gl_desc: "New #20"
te_num: "1-001-001-020"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-11 14:55:29
Debug.Print("text here")
Lub
Console.WriteLine("text here")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-11 02:35:29
W Visual Studio 2015 zadziałało dla mnie:
OutputDebugStringW(L"Write this to Output window in VS14.");
Przeczytaj dokumentację OutputDebugStringW tutaj .
Zauważ, że ta metoda działa tylko wtedy, gdy debugujesz kod (debug mode
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-17 19:12:18
Dla celów debugowania, polecenie System.Diagnostics.Debug.WriteLine()
nie zostanie skompilowane do wersji release Twojego kodu, chyba że masz debugerów. Zapisuje do wszystkich detektorów śledzenia, które zawierają okno wyjściowe VS podczas pracy w trybie debugowania.
Dla aplikacji konsolowej. Console.WriteLine()
będzie działać, ale wyjście nadal będzie generowane w wersji release Twojego pliku binarnego.
Wyjście debugowania powinno również pojawiać się w normalnym oknie wyjściowym podczas debugowania testów; natomiast konsola.WriteLine output nie (ale można je znaleźć w oknie wyjścia testu.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-10 18:34:32