Próbuję napisać komunikat do okna wyjściowego w celu debugowania. Szukałem funkcji takiej jak Java system.out.println("")
. Próbowałem Debug.Write
, Console.Write
i Trace.Write
. Nie wyświetla błędu, ale też niczego nie drukuje.
Opcje „Zdefiniuj stałą DEBUG” i „Zdefiniuj stałą TRACE” są zaznaczone.
Menu Narzędzia → Opcje → Debugowanie → „Przekierowanie cały tekst okna wyjściowego do Immediate Window” opcja nie jest zaznaczona.
Konfiguracja: Aktywna (debugowanie)
Uwaga: W razie potrzeby utworzyłem projekt za pomocą kreatora jako „Aplikacja Windows Forms”. Nie mam pojęcia, gdzie szukać.
c#
visual-studio-2010
visual-studio
debugging
previous_developer
źródło
źródło
Debug.WriteLine()
Odpowiedzi:
Dodaj
System.Diagnostics
przestrzeń nazw, a następnie możesz użyć,Debug.WriteLine()
aby szybko wydrukować wiadomość w oknie wyjściowym IDE. Aby uzyskać więcej informacji, zapoznaj się z tymi:źródło
Spowoduje to zapisanie do okna wyników debugowania:
źródło
Posługiwać się:
źródło
jest tym, czego szukasz.
Jeśli nie, spróbuj to zrobić:
Menu Narzędzia → Opcje → Debugowanie → odznacz Wyślij natychmiastowe wyjście .
źródło
Tools|Options|Debugging uncheck Send Output to Immediate
Dla mnie działała tylko przestrzeń nazw Trace, a nie Debug:
Pracuję w projekcie C # w Visual Studio 2010.
źródło
Być może szukasz
lub
źródło
MessageBox.Show()
może być bardzo denerwujące, gdy chcesz zapisać wiele wartości do celów debugowania.MessageBox.Show
nie pisze do niego.Telefon
kończy się niepowodzeniem podczas pracy z .NET Core (V 1.0 lub 1.1).
Powinniśmy utworzyć i używać programu rejestrującego
Microsoft.Extensions.Logging
, ale ten dziennik pojawia się tylko w oknie podręcznym konsoli dotnet.exe, a nie w oknie Wyjście programu Visual Studio.źródło
Wymaga to frameworku strony trzeciej, a mianowicie Serilog , ale mimo to uważam, że jest to bardzo płynne doświadczenie z dostarczaniem wyników do miejsca, w którym mogę je zobaczyć.
Najpierw musisz zainstalować zlew Serilog's Trace . Po zainstalowaniu musisz skonfigurować rejestrator w następujący sposób:
(Możesz ustawić inny minimalny poziom lub ustawić go na wartość konfiguracji lub dowolną z normalnych funkcji Serilog. Możesz także ustawić
Trace
rejestrator na konkretny poziom, aby zastąpić konfiguracje, lub jakkolwiek chcesz to zrobić.)Następnie po prostu logujesz wiadomości normalnie i pojawiają się one w oknie Output:
To nie wydaje się takie duże, więc pozwól mi wyjaśnić kilka dodatkowych zalet. Największe dla mnie było to, że mogłem jednocześnie logować się zarówno do okna Output, jak i do konsoli :
To dało mi wielką elastyczność w zakresie sposobu I spożywane wyjście, bez konieczności duplikowania wszystkie moje rozmowy do
Console.Write
zDebug.Write
. Podczas pisania kodu mogłem uruchomić narzędzie wiersza polecenia w programie Visual Studio bez obawy utraty danych wyjściowych po ich wyjściu. Kiedy go wdrożyłem i musiałem coś debugować (i nie miałem programu Visual Studio), dane wyjściowe konsoli były łatwo dostępne do mojego użytku. Te same wiadomości mogą być również rejestrowane w pliku (lub dowolnym innym zlewie), gdy jest uruchomiony jako zaplanowane zadanie.Najważniejsze jest to, że użycie Serilog do tego sprawiło, że bardzo łatwo było zrzucić wiadomości do wielu miejsc docelowych, dzięki czemu zawsze mogłem łatwo uzyskać dostęp do wyniku, niezależnie od tego, jak go uruchomiłem.
Wymaga również bardzo minimalnej konfiguracji i kodu.
źródło
To nie jest odpowiedź na pierwotne pytanie. Ale odkąd znalazłem to pytanie, kiedy szukałem sposobu interaktywnego zrzutu danych obiektowych, pomyślałem, że inni mogą odnieść korzyść ze wspomniania tej bardzo przydatnej alternatywy.
Ostatecznie skorzystałem z okna poleceń i wprowadziłem
Debug.Print
polecenie, jak pokazano poniżej. Spowodowało to wydrukowanie obiektu pamięci w formacie, który można skopiować jako tekst, a to wszystko, czego naprawdę potrzebowałem.źródło
Drukuj do okna wyjściowego programu Visual Studio:
źródło
W Visual Studio 2015 dla mnie działało:
Przeczytaj dokumentację OutputDebugStringW tutaj .
Pamiętaj, że ta metoda działa tylko wtedy, gdy debugujesz swój kod (
debug mode
)źródło
Do celów debugowania
System.Diagnostics.Debug.Writeline()
polecenie nie zostanie wkompilowane w wersję wydania kodu, chyba że masz detektory debugowania. Zapisuje do wszystkich detektorów śledzenia, które zawierają okno wyjściowe VS podczas pracy w trybie debugowania.W przypadku aplikacji konsoli.
Console.Writeline()
działałoby, ale dane wyjściowe nadal byłyby generowane w wydanej wersji pliku binarnego.Wyniki debugowania powinny również pojawić się w normalnym oknie wyników podczas testów debugowania; podczas gdy dane wyjściowe console.writeline nie (ale można je znaleźć w oknie wyników testu).
źródło