Yönetilen kod onaylamaları
Onaylama işlemi, bir ya da Assert deyimi, bağımsız değişken olarak belirttiğiniz bir koşulu test Assert ifadesi. Koşul doğru olarak değerlendirilirse, herhangi bir eylem oluşur. Koşul false olarak değerlendirilirse, onaylama işlemi başarısız olur. Hata ayıklama yapı ile çalıştırıyorsanız, programınızın kesme moduna girer.
Bu konuda
System.Diagnostics ad alanında onaylama işlemleri
Debug.Assert yöntemi
Debug.Assert yan etkileri
İzleme ve hata ayıklama gereksinimleri
Bağımsız değişkenler onaylama işlemi
Assert davranışını özelleştirme
Yapılandırma dosyalarında onayları ayarlama
System.Diagnostics ad alanında onaylama işlemleri
Visual Basic ve Visual C#, kullanabileceğiniz Assert yöntemini ya da Debug veya Trace, hangilerinin olduğunu System.Diagnostics ad alanı. DebugBunlar değil boyutunu artırın veya yayın kodunuzu hızını azaltmak için sınıfı yöntemleri, programınızın yayın sürümünde bulunmamaktadır.
c++ desteklemiyor Debug sınıf yöntemleri. Aynı etkiyi elde edebilirsiniz kullanarak Trace gibi koşullu derleme ile sınıf #ifdef DEBUG... #endif.
Bu konuda
Debug.Assert yöntemi
Kullanım Debug.Assert serbestçe kodunuzu doğru ise, doğru tutun koşullarda test etmek için yöntem. Örneğin, bir tamsayı bölme işlevi yazmış olduğunuzu varsayın. Matematik kurallarına göre bölen hiçbir zaman sıfır olamaz. Bir onaylama işlemi kullanarak bu test:
Function IntegerDivide(ByVal dividend As Integer, ByVal divisor As Integer) As Integer
Debug.Assert(divisor <> 0)
Return CInt(dividend / divisor)
End Function
int IntegerDivide ( int dividend , int divisor )
{ Debug.Assert ( divisor != 0 );
return ( dividend / divisor ); }
Hata ayıklayıcı altında bu kodu çalıştırmak, onaylama ifadesi değerlendirilir, ancak yayın sürümünde olmayan karşılaştırma yapılmadan böylece olduğunda ek olmamasıdır.
Başka bir örnek aşağıdadır. Aşağıdaki gibi bir çek hesabı uygulayan bir sınıf vardır:
Dim amount, balance As Double
balance = savingsAccount.balance
Debug.Assert(amount <= balance)
SavingsAccount.Withdraw(amount)
float balance = savingsAccount.Balance;
Debug.Assert ( amount <= balance );
savingsAccount.Withdraw ( amount );
Hesaptan paranızı geri al hesap bakiyesi geri hazırlanıyor tutarını karşılamak yeterli olduğundan emin olmak istediğiniz. Bakiye denetlemek için bir onaylama işlemi yazabiliriz:
Dim amount, balance As Double
balance = savingsAccount.balance
Trace.Assert(amount <= balance)
SavingsAccount.Withdraw(amount)
float balance = savingsAccount.Balance;
Trace.Assert ( amount <= balance );
savingsAccount.Withdraw ( amount );
Not için çağırdığı Debug.Assert yöntemi, kodunuzun bir yayım sürümünü oluşturduğunuzda kaybolur. Bakiye kontrol eden çağrı yayın sürümünde kaybolur anlamına gelir. Bu sorunu çözmek için değiştirmeniz Debug.Assert ile Trace.Assert, hangi değil kaybolur yayın sürümünde:
İçin çağırdığı Trace.Assert çağrıları aksine, yayın sürümü için ek yükü ekleme Debug.Assert.
Bu konuda
Debug.Assert yan etkileri
Kullandığınızda, Debug.Assert, herhangi bir iç kod emin olun Assert program sonuçlarını değişmez Assert kaldırılır. Aksi takdirde, yalnızca programınızın yayın sürümünde görünür bir hata yanlışlıkla bulaştırabilir. Özellikle dikkatli olun, işlev veya yordam içeren yaklaşık zorunlu gibi aşağıdaki örnek aramaları:
' unsafe code
Debug.Assert (meas(i) <> 0 )
// unsafe code
Debug.Assert (meas(i) != 0 );
Bu kullanımı Debug.Assert ilk bakışta güvenli görünebilir, ancak her zaman bir sayaç işlevi meas güncelleştirmeleri varsayalım denir. Yayın sürümünü oluşturduğunuzda, sayaç güncelleştirilmemiş için bu çağrıyı meas ortadan kaldırılır. Bu işlev bir yan etkisi olan bir örnektir. Yan etkileri olan bir işlev çağrısı ortadan yayın sürümünde yalnızca görünür bir hata neden olabilir. Bu tür sorunları önlemek için işlev çağrılarında yerleştirmeyin bir Debug.Assert ifadesi. Bunun yerine geçici bir değişken kullanın:
temp = meas( i )
Debug.Assert (temp <> 0)
temp = meas( i );
Debug.Assert ( temp != 0 );
Hatta kullandığınızda, Trace.Assert, yine de işlev çağrılarının içine yerleştirmekten kaçının isteyebilirsiniz bir Assert ifadesi. Bu tür çağrıları güvenli, çünkü Trace.Assert deyimleri değil ortadan bir yayın yapısı içinde. Bir kaç alýþkanlýk olarak Böyle yapıları önlemek, ancak, kullandığınızda bir hata yaparsanız ihtimalleri daha az Debug.Assert.
Bu konuda
İzleme ve hata ayıklama gereksinimleri
Project kullanarak oluşturursanız, Visual Studio sihirbazlar, izleme simgesi hem yayın hem de hata ayıklama yapılandırmalarında varsayılan olarak tanımlanır. Hata ayıklama simge varsayılan yalnızca hata ayıklama yapı olarak tanımlanır.
Aksi durumda, için Trace çalışmak için yöntemler programınızı üst kısmında aşağıdakilerden biri olmalıdır:
#Const TRACE = TrueVisual Basic'te
#define TRACEVisual C# ve c++
Veya programınız izleme seçeneği ile oluşturulması gerekir:
/d:TRACE=TrueVisual Basic'te
/d:TRACEVisual C# ve c++
C# veya Visual Basic sürüm bir yapı içinde hata ayıklama yöntemleri kullanmanız gerekirse, yayın yapılandırmanızda hata ayıklama simge tanımlamalısınız.
c++ desteklemiyor Debug sınıf yöntemleri. Aynı etkiyi elde edebilirsiniz kullanarak Trace gibi koşullu derleme ile sınıf #ifdef DEBUG... #endif. Bu simgeler tanımlayabilirsiniz <Project> Özellik sayfaları iletişim kutusu. Daha fazla bilgi için bkz: Bir Visual Basic hata ayıklama yapılandırması için proje ayarları değiştirme veya Bir c veya c++ hata ayıklama yapılandırması için proje ayarları değiştirme.
Bağımsız değişkenler onaylama işlemi
Trace.Assertve Debug.Assert en çok üç bağımsız değişkenleri alır. Zorunlu ise, ilk bağımsız değişken, denetlemek istediğiniz durumdur. Çağırırsanız Trace.Assert(Boolean) veya Debug.Assert(Boolean) yalnızca tek bir bağımsız değişken ile Assert yöntemi koşul denetler ve sonucu yanlışsa, çağırma yığınını içeriğini çıktı Çıkış pencere. Aşağıdaki örnekte gösterildiği Trace.Assert(Boolean) ve Debug.Assert(Boolean):
Debug.Assert(stacksize > 0)
Trace.Assert(stacksize > 0)
Debug.Assert ( stacksize > 0 );
Trace.Assert ( stacksize > 0 );
İkinci ve üçüncü bağımsız değişken varsa, dizeler olmalıdır. Çağırırsanız Trace.Assert veya Debug.Assert iki veya üç bağımsız değişkenlerle, ilk bağımsız değişken bir durumdur. Yöntem koşul denetler ve sonucu yanlışsa, dizenin ikinci ve üçüncü dizeleri çıkarır. Aşağıdaki örnekte gösterildiği Debug.Assert(Boolean, String) ve Trace.Assert(Boolean, String) iki baðýmsýz deðiþkenle kullanılır:
Debug.Assert(stacksize > 0, "Out of stack space")
Trace.Assert(stacksize > 0, "Out of stack space")
Debug.Assert ( stacksize > 0, "Out of stack space" );
Trace.Assert ( stacksize > 0, "Out of stack space" );
Aşağıdaki örnekte gösterildiği Assert ve Assert:
Debug.Assert(stacksize > 0, "Out of stack space. Bytes left:" , Format(size, "G"))
Trace.Assert(stacksize > 0, "Out of stack space. Bytes left:" , Format(size, "G"))
Trace.Assert(stacksize > 0, "Out of stack space. Bytes left:", "inctemp failed on third call" )
Debug.Assert ( stacksize > 100, "Out of stack space" , "Failed in inctemp" );
Trace.Assert ( stacksize > 0, "Out of stack space", "Failed in inctemp" );
Bu konuda
Assert davranışını özelleştirme
Uygulama kullanıcı arabirimi modunda çalıştırırsanız, Assert yöntemini görüntüler Onaylama işlemi başarısız oldu koşulu başarısız olduğunda iletişim kutusu. Bir onaylama işlemi başarısız olduğunda, eylemleri denetlenir Listeners veya Listeners özelliği.
Ekleyerek çıktı davranışı özelleştirebilirsiniz bir TraceListener nesnesinin Listeners kaldırarak koleksiyonu, bir TraceListener dan Listeners koleksiyonu, veya geçersiz kılma TraceListener.Fail yöntemi, varolan bir TraceListener yapmak için ona farklı davranır.
Örneğin, geçersiz TraceListener.Fail yöntemine görüntülemek yerine bir olay günlüğüne yazmak için Onaylama işlemi başarısız oldu iletişim kutusu.
Çıktı bu şekilde özelleştirmek için programınızı bir dinleyici içermeli ve devralması gereken TraceListener ve geçersiz kılma, TraceListener.Fail yöntem.
Daha fazla bilgi için bkz: İzleme dinleyicileri.
Bu konuda
Yapılandırma dosyalarında onayları ayarlama
Program yapılandırma dosyanızdaki yanı onayları olduğu gibi kod ayarlayabilirsiniz. Daha fazla bilgi için bkz: Trace.Assert veya Debug.Assert.
Ayrıca bkz.
Görevler
Nasıl yapılır: izleme ve hata ayıklama ile koşullu olarak derleme
Başvuru
Kavramlar
Diğer Kaynaklar
İzleme ve uygulamaları açıklamak
Hata ayıklama hazırlık: C#, F# ve Visual Basic proje türleri