Uygulamaları izleme ve İşaretleme

İzleme, çalışırken uygulamanızın yürütülmesini izlemenize yarayan bir yöntemdir. .NET Framework uygulamanızı geliştirirken izleme ve hata ayıklama izleme araçları ekleyebilir ve bu izleme özelliğini hem uygulamayı geliştirirken hem de dağıttıktan sonra kullanabilirsiniz. Daha sonra analiz etmek üzere günlüklerde, metin dosyalarında veya diğer cihazlarda hatalar ve uygulama yürütme hakkındaki bilgileri kaydetmek için , System.Diagnostics.Debugve System.Diagnostics.TraceSource sınıflarını kullanabilirsinizSystem.Diagnostics.Trace.

İzleme terimi, bir ürünün performans düzeyini izleme veya ölçme ve hataları tanılama özelliğini ifade eder. Programlamada bu, bir uygulamanın şunları dahil edebilmesi anlamına gelir:

  • Kod izleme - Bir uygulamanın çalışma zamanında yürütülmesi hakkında bilgilendirici iletiler alma.

  • Hata ayıklama - Geliştirme aşamasındaki bir uygulamada programlama hatalarını izleme ve düzeltme. Daha fazla bilgi için bkz . Hata Ayıklama.

  • Performans sayaçları - Uygulamanızın performansını izlemenize olanak sağlayan bileşenler. Daha fazla bilgi için bkz . Performans Sayaçları.

  • Olay günlükleri - Uygulamanızın yürütülmesinde önemli olayları almanıza ve izlemenize olanak sağlayan bileşenler. Daha fazla bilgi için sınıfına EventLog bakın.

Kodunuzun stratejik konumlarına izleme deyimleri yerleştirerek uygulamanızı izlemek, dağıtılmış uygulamalar için özellikle yararlıdır. İzleme deyimlerini kullanarak, bir uygulamayı yalnızca işler yolunda gitmediğinde bilgileri görüntülemek için değil, aynı zamanda uygulamanın ne kadar iyi performans sergilediğini izlemek için de izleyebilirsiniz.

TraceSource sınıfı gelişmiş izleme özellikleri sağlar ve eski Trace ve Debug izleme sınıflarının statik yöntemleri yerine kullanılabilir. Tanıdık Trace ve Debug sınıflar hala yaygın olarak kullanılır, ancak TraceSource ve TraceDatagibi TraceEvent yeni izleme komutları için sınıfı önerilir.

Trace ve Debug sınıfları aynıdır, ancak sınıfın Trace yordamları ve işlevleri varsayılan olarak yayın derlemelerinde derlenir, ancak sınıfınkiler Debug derlenmez.

Trace ve Debug sınıfları, geliştirme sırasında veya dağıtımdan sonra uygulama performansını izlemek ve incelemek için araçlar sağlar. Örneğin, dağıtılan bir uygulamadaki belirli eylem türlerini (örneğin, yeni veritabanı bağlantılarının oluşturulması) izlemek için sınıfını kullanabilir Trace ve bu nedenle uygulamanın verimliliğini izleyebilirsiniz.

Kod İzleme ve Hata Ayıklama

Geliştirme sırasında, Visual Studio tümleşik geliştirme ortamının Debug (IDE) Çıkış penceresinde iletileri görüntülemek için sınıfının çıkış yöntemlerini kullanabilirsiniz. Örneğin:

Trace.WriteLine("Hello World!")  
Debug.WriteLine("Hello World!")  
System.Diagnostics.Trace.WriteLine("Hello World!");  
System.Diagnostics.Debug.WriteLine("Hello World!");  

Bu örneklerin her biri, uygulama hata ayıklayıcıda çalıştırıldığında Çıkış penceresinde "Merhaba Dünya!" ifadesini görüntüler.

Bu, uygulamalarınızın hatalarını ayıklamanıza ve test ortamınızdaki davranışlarına göre performanslarını iyileştirmenize olanak tanır. Tüm hata ayıklama çıkışını almak için koşullu öznitelik açık durumdayken Debug hata ayıklama derlemenizde uygulamanızda hata ayıklayabilirsiniz. Uygulamanız yayına hazır olduğunda, koşullu özniteliği açmadan Debug yayın derlemenizi derleyebilirsiniz, böylece derleyici hata ayıklama kodunuzu son yürütülebilir dosyaya dahil etmeyecektir. Daha fazla bilgi için bkz . Nasıl yapılır: İzleme ve Hata Ayıklama ile Koşullu Olarak Derleme. Uygulamanız için farklı derleme yapılandırmaları hakkında daha fazla bilgi için bkz . Derleme ve Derleme.

Ayrıca, sınıfının yöntemlerini kullanarak yüklü bir uygulamada kod yürütmeyi Trace izleyebilirsiniz. İzleme Anahtarlarını kodunuz içine yerleştirerek izlemenin gerçekleşip gerçekleşmediğini ve ne kadar kapsamlı olduğunu denetleyebilirsiniz. Bu, üretim ortamında uygulamanızın durumunu izlemenizi sağlar. Bu, özellikle birden çok bilgisayarda çalışan birden çok bileşen kullanan bir iş uygulamasında önemlidir. Dağıtımdan sonra anahtarların nasıl kullanıldığını yapılandırma dosyası aracılığıyla denetleyebilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: İzleme Anahtarları Oluşturma, Başlatma ve Yapılandırma.

İzlemeyi kullanmayı planladığınız bir uygulama geliştirirken, genellikle uygulama koduna hem izleme hem de hata ayıklama iletileri eklersiniz. Uygulamayı dağıtmaya hazır olduğunuzda, Hata ayıklama koşullu özniteliğini açmadan yayın derlemenizi derleyebilirsiniz. Ancak, derleyicinin izleme kodunuzu yürütülebilir dosyaya eklemesi için İzleme koşullu özniteliğini açabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: İzleme ve Hata Ayıklama ile Koşullu Olarak Derleme.

Kod İzleme Aşamaları

Kod izlemenin üç aşaması vardır:

  1. İzleme — uygulamanıza izleme kodu eklersiniz.

  2. İzleme — izleme kodu belirtilen hedefe bilgi yazar.

  3. Analiz — uygulamadaki sorunları tanımlamak ve anlamak için izleme bilgilerini değerlendirirsiniz.

Geliştirme sırasında, tüm hata ayıklama ve izleme çıkış yöntemleri varsayılan olarak Visual Studio'daki Çıkış penceresine bilgi yazar. Dağıtılan bir uygulamada yöntemler, belirttiğiniz hedeflere izleme bilgileri yazar. İzleme veya hata ayıklama için bir çıkış hedefi belirtme hakkında daha fazla bilgi için bkz . İzleme Dinleyicileri.

Aşağıda, dağıtılan uygulamalarda olası sorunları analiz etmek ve düzeltmek için genellikle izlemenin kullanılmasıyla ilgili başlıca adımların genel bir görünümü yer almaktadır. Bu adımları gerçekleştirme hakkında daha fazla bilgi için uygun bağlantıya bakın.

Uygulamada izlemeyi kullanmak için
  1. Uygulamayı dağıttıktan sonra hangi izleme çıkışını yerinde almak istediğinizi düşünün.

  2. Bir anahtar kümesi oluşturun. Daha fazla bilgi için bkz . Nasıl yapılır: İzleme Anahtarlarını Yapılandırma.

  3. uygulama koduna izleme deyimlerini ekleyin.

  4. İzleme çıkışının nerede görünmesini istediğinizi belirleyin ve uygun dinleyicileri ekleyin. Daha fazla bilgi için bkz . İzleme Dinleyicileri Oluşturma ve Başlatma.

  5. Uygulamanızı ve içerdiği izleme kodunu test edin ve hatalarını ayıklayın.

  6. Aşağıdaki yordamlardan birini kullanarak uygulamayı yürütülebilir kod olarak derleyin:

    • Çözüm Gezgini Özellik Sayfaları iletişim kutusunun Hata Ayıklama sayfasıyla birlikte Oluştur menüsünü kullanın. Visual Studio'da derleme yaparken bunu kullanın.

      - veya -

    • Derlemenin komut satırı yöntemi için İzleme ve Hata Ayıklama derleyicisi yönergelerini kullanın. Daha fazla bilgi için bkz . İzleme ve Hata Ayıklama ile Koşullu Derleme. Komut satırından derleme yaparken bunu kullanın.

  7. Çalışma zamanında bir sorun oluşursa uygun izleme anahtarını açın. Daha fazla bilgi için bkz . İzleme Anahtarlarını Yapılandırma.

    İzleme kodu, izleme iletilerini belirli bir hedefe yazar; örneğin, ekran, metin dosyası veya olay günlüğü. Koleksiyona Trace.Listeners eklediğiniz dinleyici türü hedefi belirler.

  8. Uygulamadaki sorunu tanımlamak ve anlamak için izleme iletilerini analiz edin.

İzleme İzleme İzleme ve Dağıtılmış Uygulamalar

Dağıtılmış bir uygulama oluşturduğunuzda, uygulamayı kullanılacak şekilde test etmek zor olabilir. Az sayıda geliştirme ekibi, işletim sistemlerinin veya Web tarayıcılarının tüm olası birleşimlerini (tüm yerelleştirilmiş dil seçenekleri dahil) test etme veya aynı anda uygulamaya erişecek kullanıcı sayısının simülasyonunu yapma özelliğine sahiptir. Bu koşullar altında, dağıtılmış bir uygulamanın yüksek birimlere, farklı kurulumlara ve benzersiz son kullanıcı davranışlarına nasıl yanıt vereceğini test edemezsiniz. Ayrıca, dağıtılmış bir uygulamanın birçok bölümünde doğrudan etkileşim kurabileceğiniz veya bu bölümlerin etkinliğini görüntüleyebileceğiniz bir kullanıcı arabirimi yoktur.

Ancak, dağıtılmış uygulamaların sistem yöneticilerinin ilgilendiği bazı olayları, özellikle de yanlış giden şeyleri tanımlamasını sağlayarak, uygulamayı izleyerek ( yani, kodunuzda stratejik konumlara izleme deyimleri yerleştirerek) bunu telafi edebilirsiniz. Ardından çalışma zamanında beklenmeyen bir şey oluşursa (örneğin, aşırı yavaş yanıt süresi), olası nedeni belirleyebilirsiniz.

İzleme deyimleriyle, özgün kaynak kodu inceleme, değiştirme, yeniden derleme ve hata ayıklama ortamında çalışma zamanı hatası üretmeyi deneme gibi zor görevlerden kaçınabilirsiniz. Bir uygulamayı yalnızca hataları görüntülemek için değil, aynı zamanda performansı izlemek için de izleyebileceğinizi unutmayın.

İzleme Deyimlerinin Stratejik Yerleşimi

İzleme deyimlerinizi çalışma zamanında kullanmak üzere yerleştirirken özel bir özen göstermeniz gerekir. Tüm olası izleme senaryolarının yeterince ele alınması için dağıtılan bir uygulamada hangi izleme bilgilerinin gerekli olabileceğini göz önünde bulundurmanız gerekir. İzleme kullanan uygulamalar büyük ölçüde farklılık gösterdiğinden, izlemenin stratejik yerleşimi için genel yönergeler yoktur. İzleme deyimlerini yerleştirme hakkında daha fazla bilgi için bkz . Nasıl yapılır: Uygulama Koduna İzleme Deyimleri Ekleme.

İzlemeden Çıktı

İzleme çıkışı dinleyiciler adlı nesneler tarafından toplanır. Dinleyici, izleme çıktısı alan ve bunu bir çıkış cihazına (genellikle bir pencere, günlük veya metin dosyası) yazan bir nesnedir. İzleme dinleyicisi oluşturulduğunda genellikle koleksiyona Trace.Listeners eklenir ve dinleyicinin tüm izleme çıkışını almasına olanak sağlar.

İzleme bilgileri her zaman en azından varsayılan Trace çıkış hedefi olan DefaultTraceListeneröğesine yazılır. Herhangi bir nedenle koleksiyonuna DefaultTraceListener başka dinleyici Listeners eklemeden öğesini sildiyseniz, izleme iletisi almazsınız. Daha fazla bilgi için bkz . İzleme Dinleyicileri.

İzleme bilgilerini yazan altı Debug üye ve Trace yöntem aşağıdaki tabloda listelenmiştir.

Metot Çıktı
Assert Belirtilen metin; veya hiçbiri belirtilmezse Çağrı Yığını. Çıkış yalnızca deyiminde Assert bağımsız değişken olarak belirtilen koşul false olduğunda yazılır.
Fail Belirtilen metin; veya hiçbiri belirtilmezse Çağrı Yığını.
Write Belirtilen metin.
WriteIf Deyiminde bağımsız değişken WriteIf olarak belirtilen koşul karşılanırsa, belirtilen metin.
WriteLine Belirtilen metin ve satır başı.
WriteLineIf Deyimde WriteLineIf bağımsız değişken olarak belirtilen koşul karşılanırsa, belirtilen metin ve satır başı.

Koleksiyondaki Listeners tüm dinleyiciler yukarıdaki tabloda açıklanan iletileri alır, ancak iletiyi ne tür bir dinleyicinin aldığına bağlı olarak yapılan eylemler farklılık gösterebilir. Örneğin, DefaultTraceListener onay iletişim kutusu bir Fail veya başarısız Assert bildirimi aldığında görüntülenir, ancak yalnızca çıkışı TextWriterTraceListener akışına yazar.

Kendi dinleyicinizi uygulayarak özel sonuçlar oluşturabilirsiniz. Özel izleme dinleyicisi, örneğin iletileri bir ileti kutusuna görüntüleyebilir veya tabloya ileti eklemek için veritabanına bağlanabilir. Tüm özel dinleyiciler yukarıda belirtilen altı yöntemi desteklemelidir. Geliştirici tanımlı dinleyiciler oluşturma hakkında daha fazla bilgi için bkz TraceListener . .NET Framework başvurusu.

Write ve WriteLine yöntemleri her zaman belirttiğiniz metni yazar. Assert, WriteIfve WriteLineIf belirtilen metni yazıp yazmadıklarını denetleyen bir Boole bağımsız değişkeni gerektirir; belirtilen metni yalnızca ifade true (ve WriteLineIfWriteIf ) veya false (içinAssert) olduğunda yazar. Fail yöntemi her zaman belirtilen metni yazar. Daha fazla bilgi için bkz . Nasıl yapılır: Uygulama Koduna İzleme Deyimleri Ekleme ve .NET Framework başvurusu.

GüvenlikLe ilgili Endişeler

bir ASP.NET uygulamasını dağıtmadan önce izlemeyi ve hata ayıklamayı devre dışı bırakmazsanız, uygulamanız kendisi hakkında kötü amaçlı bir program tarafından kötüye kullanılabilecek bilgiler gösterebilir. Daha fazla bilgi için bkz . Nasıl yapılır: İzleme ve Hata Ayıklama ile Koşullu Olarak Derleme, Derleme ve Oluşturma ve Nasıl Yapılır: İzleme Anahtarları Oluşturma, Başlatma ve Yapılandırma. Hata ayıklama, Internet Information Services (IIS) aracılığıyla da yapılandırılabilir.

Ayrıca bkz.