Saya mencoba menulis pesan ke jendela keluaran untuk keperluan debugging. Saya mencari fungsi seperti Java system.out.println("")
. Saya mencoba Debug.Write
, Console.Write
dan Trace.Write
. Itu tidak memberikan kesalahan, tetapi juga tidak mencetak apa pun.
Opsi "Define DEBUG constant" dan "Define TRACE constant" dicentang.
Alat Menu → Pilihan → Debugging → "Alihkan semua teks Jendela Output ke Jendela Segera" pilihan tidak dicentang.
Konfigurasi: Aktif (Debug)
Catatan: Saya membuat proyek dengan wizard sebagai "Aplikasi Formulir Windows" jika relevan. Saya tidak tahu ke mana harus mencari.
c#
visual-studio-2010
visual-studio
debugging
prior_developer
sumber
sumber
Debug.WriteLine()
Jawaban:
Tambahkan
System.Diagnostics
namespace, dan kemudian Anda dapat menggunakannyaDebug.WriteLine()
untuk dengan cepat mencetak pesan ke jendela output IDE. Untuk detail lebih lanjut, silakan merujuk ini:sumber
Ini akan menulis ke jendela hasil debug:
sumber
Menggunakan:
sumber
adalah apa yang kamu cari.
Jika tidak, coba lakukan ini:
Alat Menu → Pilihan → Debugging → hapus centang Kirim Output untuk Segera .
sumber
Tools|Options|Debugging uncheck Send Output to Immediate
Bagi saya, hanya Trace namespace dan bukan Debug yang bekerja:
Saya bekerja di proyek C # di bawah Visual Studio 2010.
sumber
Anda mungkin sedang mencari
atau
sumber
MessageBox.Show()
bisa sangat menjengkelkan ketika Anda ingin menulis beberapa nilai untuk keperluan debugging.MessageBox.Show
tidak menuliskannya.Panggilan
gagal saat bekerja dengan .NET Core (V 1.0 atau 1.1).
Kita seharusnya membuat dan menggunakan logger dari
Microsoft.Extensions.Logging
, tetapi log itu hanya muncul di jendela konsol popnet dotnet.exe, bukan di jendela Output Visual Studio.sumber
Ini membutuhkan kerangka kerja pihak ketiga, yaitu Serilog , tetapi saya tetap menganggapnya sangat lancar dengan mendapatkan output ke beberapa tempat yang bisa saya lihat.
Pertama-tama Anda harus menginstal wastafel Jejak Serilog . Setelah diinstal, Anda perlu mengatur logger seperti ini:
(Anda dapat mengatur level minimum yang berbeda atau mengaturnya ke nilai konfigurasi atau fungsi Serilog normal mana pun. Anda juga dapat mengatur
Trace
logger ke level tertentu untuk mengganti konfigurasi, atau bagaimanapun Anda ingin melakukan ini.)Kemudian, Anda cukup mencatat pesan secara normal dan muncul di jendela Output:
Ini sepertinya bukan masalah besar, jadi izinkan saya menjelaskan beberapa manfaat tambahan. Yang terbesar bagi saya adalah saya bisa secara bersamaan masuk ke jendela Output dan konsol :
Ini memberi saya fleksibilitas yang besar dalam hal bagaimana saya dikonsumsi output, tanpa harus menduplikasi semua panggilan saya untuk
Console.Write
denganDebug.Write
. Saat menulis kode, saya bisa menjalankan alat baris perintah di Visual Studio tanpa takut kehilangan output saat keluar. Ketika saya telah menggunakannya dan perlu men-debug sesuatu (dan tidak memiliki Visual Studio tersedia), output konsol sudah tersedia untuk konsumsi saya. Pesan yang sama juga dapat dicatat ke file (atau jenis sink lainnya) saat dijalankan sebagai tugas yang dijadwalkan.Intinya adalah bahwa menggunakan Serilog untuk melakukan ini membuatnya sangat mudah untuk membuang pesan ke banyak tujuan, memastikan saya selalu dapat dengan mudah mengakses output terlepas dari bagaimana saya menjalankannya.
Ini juga membutuhkan pengaturan dan kode yang sangat minim.
sumber
Ini bukan jawaban untuk pertanyaan awal. Tapi karena saya menemukan pertanyaan ini ketika mencari cara untuk secara interaktif membuang data objek, saya pikir orang lain mungkin mendapat manfaat dengan menyebutkan alternatif yang sangat berguna ini.
Saya akhirnya menggunakan Window Perintah dan memasukkan
Debug.Print
perintah, seperti yang ditunjukkan di bawah ini. Ini mencetak objek memori dalam format yang dapat disalin sebagai teks, yang sangat saya butuhkan.sumber
Cetak ke jendela output dari Visual Studio:
sumber
Berikut ini bekerja untuk saya di Visual Studio 2015:
Baca dokumentasi untuk OutputDebugStringW di sini .
Perhatikan bahwa metode ini hanya berfungsi jika Anda men-debug kode Anda (
debug mode
)sumber
Untuk keperluan debugging,
System.Diagnostics.Debug.Writeline()
perintah tidak akan dikompilasi ke versi rilis kode Anda kecuali Anda memiliki pendengar debug. Itu menulis untuk semua pendengar jejak yang termasuk jendela VS output ketika berjalan dalam mode Debug.Untuk aplikasi Konsol.
Console.Writeline()
akan bekerja tetapi hasilnya masih akan dihasilkan dalam versi rilis biner Anda.Output debug juga akan muncul di jendela output normal ketika debugging tes; sedangkan, output konsol.writeline tidak (tetapi dapat ditemukan di jendela output tes.)
sumber