Ada dua cara untuk meningkatkan kegunaan informasi debug daripada melihatnya {MyNamespace.MyProject.MyClass}
di debugger.
Ini adalah penggunaan DebuggerDisplayAttribute
dan ToString()
metode.
using System.Diagnostics;
...
[DebuggerDisplay("Name = {Name}")]
public class Person
{
public string Name;
}
atau
public class Person
{
public string Name;
public override string ToString()
{
return string.Format("Name = {0}", Name);
}
}
Apakah ada alasan untuk memilih salah satu dari yang lain? Ada alasan untuk tidak melakukan keduanya? Apakah ini murni preferensi pribadi?
sumber
ToString
sering digunakan sebagai "string tampilan default", misalnya, olehConsole.WriteLine
atau pengikatan data WPF.Jika apa yang
ToString()
kembali dan Anda lihat di debugger bukan yang Anda inginkan, maka Anda gunakanDebuggerDisplayAttribute
.sumber
Kelambatan debugger juga dapat diperhitungkan:
DebuggerDisplayAttribute
ekspresi format ditafsirkan oleh debugger setelah setiap langkah debug / breakpoint.ToString
adalah disusun dalam kode Anda dan karena itu lebih cepat untuk mengeksekusi dengan debugger.Itu sama dengan breakpoint bersyarat: Jika ekspresi kondisional terlalu lambat untuk ditafsirkan oleh debugger setiap kali eksekusi mencapai breakpoint, akan berguna untuk menghapus breakpoint dan sebagai gantinya menambahkan kode sementara seperti ini:
if (condition) Debugger.Break();
sumber