Visual Studio Hata Ayıklayıcısı'na ilk bakış
Bu konu başlığında Visual Studio tarafından sağlanan hata ayıklayıcı araçları tanıtılmaktadır. Visual Studio bağlamında, uygulamanızda hata ayıkladığınızda, genellikle uygulamayı hata ayıklayıcı ekli (hata ayıklayıcı modunda) çalıştırdığınız anlamına gelir. Bunu yaptığınızda, hata ayıklayıcısı kodunuzun çalışırken ne yaptığını görmek için birçok yol sağlar. Kodunuzda adım adım ilerleyebilir ve değişkenlerde depolanan değerlere göz atabilir, değerlerin ne zaman değiştiğini görmek için değişkenler üzerinde izlemeler ayarlayabilir, kodunuzun yürütme yolunu inceleyebilirsiniz. Kodda ilk kez hata ayıklamayı denediyseniz, bu konuya geçmeden önce mutlak yeni başlayanlar için hata ayıklama konusunu okumak isteyebilirsiniz. Belirli bir görevi gerçekleştirmeye çalışıyorsanız ve hangi özelliği kullanacağınızı bilmeniz gerekiyorsa bkz . Hata ayıklayıcısı özellik bulucu. Yapay zeka destekli hata ayıklamayı denemek için bkz . Copilot ile hata ayıklama.
Burada açıklanan özellikler C#, C++, Visual Basic, JavaScript ve Visual Studio tarafından desteklenen diğer diller (not edilenler dışında) için geçerlidir.
Kesme noktası ayarlama ve hata ayıklayıcıyı başlatma
Kesme noktaları, çalışma zamanında ayrıntılı olarak incelemek istediğiniz kod satırını veya kod bölümünü bildiğinizde yararlı bir özelliktir. Koşullu kesme noktaları ve işlev kesme noktaları gibi farklı kesme noktası türleri hakkında daha fazla bilgi için bkz . Kesme noktalarını kullanma.
Hata ayıklamak için, uygulamanızı uygulama işlemine eklenmiş hata ayıklayıcıyla başlatmanız gerekir. Bunu yapmak için:
- En yaygın yöntem olan F5 (Hata AyıklamaYı > Başlat Hata Ayıklama) tuşlarına basın.
Ancak, şu anda uygulama kodunuzu incelemek için herhangi bir kesme noktası ayarlamamış olabilirsiniz, bu nedenle önce bunu yapacağız ve sonra hata ayıklamaya başlayacağız. Kesme noktaları, güvenilir hata ayıklama işleminin en temel ve önemli özelliğidir. Kesme noktası, değişkenlerin değerlerine, bellek davranışına veya bir kod dalının çalıştırılıp çalıştırılmadığına bakabilmeniz için Visual Studio'nun çalışan kodunuzu nerede askıya alması gerektiğini gösterir.
Kod düzenleyicisinde açık bir dosyanız varsa, bir kod satırının solundaki kenar boşluğuna tıklayarak kesme noktası ayarlayabilirsiniz.
Hata Ayıklama Araç Çubuğu'nda F5 (Hata Ayıklama > Başlat Hata Ayıklama) veya Hata Ayıklamayı Başlat düğmesine basın; hata ayıklayıcı karşılaştığı ilk kesme noktasına kadar çalışır. Uygulama henüz çalışmıyorsa, F5 hata ayıklayıcıyı başlatır ve ilk kesme noktasında durur.
Adım komutlarını kullanarak hata ayıklayıcıda kodda gezinme
Çoğu komut için klavye kısayollarını sağlarız çünkü bunlar uygulama kodunuzda gezinmeyi daha hızlı hale getirir. (Menü komutları gibi eşdeğer komutlar parantez içinde gösterilir.) Adım komutlarını kullanma hakkında daha fazla ayrıntı için bkz . Hata ayıklayıcıda kodda gezinme.
Uygulamanızı hata ayıklayıcı ekli olarak başlatmak için F11 (Hata Ayıklama > Adımına) basın. F11, Adımla komutudur ve uygulama yürütme işlemini her seferinde bir deyimle ilerler. Uygulamayı F11 ile başlattığınızda, hata ayıklayıcı yürütülen ilk deyimde sonlanır.
Sarı ok, hata ayıklayıcının duraklatıldığı deyimi temsil eder ve aynı noktada uygulama yürütmeyi de askıya alır (bu deyim henüz yürütülmemiştir).
F11, yürütme akışını en ayrıntılı şekilde incelemenin iyi bir yoludur. (Kodda daha hızlı ilerlemek için size diğer bazı seçenekleri de gösteririz.) Varsayılan olarak, hata ayıklayıcısı kullanıcı dışı kodu atlar (daha fazla ayrıntı istiyorsanız bkz . Yalnızca Kodum).
Not
Yönetilen kodda, özellikler ve işleçler (varsayılan davranış) üzerinden otomatik olarak geçtiğinizde bildirim almak isteyip istemediğinizi soran bir iletişim kutusu görürsünüz. Ayarı daha sonra değiştirmek isterseniz, Hata Ayıklama altındaki Araçlar > Seçenekleri menüsündeKi Özellikler ve işleçler üzerinde adımla ayarını devre dışı bırakın.
İşlevleri atlamak için kodun üzerine adım atlayın
İşlev veya yöntem çağrısı olan bir kod satırında olduğunuzda, F11 yerine F10(Hata Ayıklama > Adımı) tuşuna basabilirsiniz.
F10, uygulama kodunuzdaki işlevlere veya yöntemlere adım atmadan hata ayıklayıcıyı ilerletir (kod yine de yürütülür). F10'a basarak ilgilenmediğiniz kodu atlayabilirsiniz. Bu şekilde, daha çok ilgilendiğiniz kodlara hızla ulaşabilirsiniz. Adım komutlarını kullanma hakkında daha fazla ayrıntı için bkz . Hata ayıklayıcıda kodda gezinme.
Fareyi kullanarak kodunuzda hızla bir noktaya kadar çalıştırın
Tıklatılacak Çalıştır düğmesinin kullanılması, geçici bir kesme noktası ayarlamaya benzer. Bu komut, uygulama kodunun görünür bir bölgesinde hızla gezinmek için de kullanışlıdır. Herhangi bir açık dosyaya tıklamak için Çalıştır'ı kullanabilirsiniz. Bu özellik ve benzer gezinti özellikleri hakkında daha fazla bilgi için bkz . Kodunuzda belirli bir konuma çalıştırma.
Hata ayıklayıcıdayken, solda Tıkla çalıştır (Yürütmeyi buradan çalıştır) düğmesi görünene kadar bir kod satırının üzerine gelin.
Not
Tıkla çalıştır (Yürütmeyi buradan çalıştır) düğmesi Visual Studio 2017'den itibaren kullanılabilir.
Tıklamak için Çalıştır (Yürütmeyi buradan çalıştır) düğmesine tıklayın. Hata ayıklayıcı, tıkladığınız kod satırına ilerler.
Hata ayıklayıcıyı geçerli işlevin dışına ilerlet
Bazen hata ayıklama oturumunuza devam etmek ancak hata ayıklayıcıyı geçerli işlev boyunca ilerletmek isteyebilirsiniz.
Shift + F11 tuşlarına basın (veya Hata Ayıklama > Adımı Dışarı).
Bu komut, geçerli işlev dönene kadar uygulama yürütmeyi sürdürür (ve hata ayıklayıcıyı ilerletir).
İmleç için çalıştır
Kodu düzenlerken (hata ayıklayıcıda duraklatmak yerine), uygulamanızda bir kod satırına sağ tıklayın ve İmleçte Çalıştır'ı seçin (veya Ctrl + F10 tuşuna basın). Bu komut hata ayıklamayı başlatır ve geçerli kod satırında geçici bir kesme noktası ayarlar. Bu özellik ve benzer gezinti özellikleri hakkında daha fazla bilgi için bkz . Kodunuzda belirli bir konuma çalıştırma.
Kesme noktaları ayarladıysanız, hata ayıklayıcı isabet eden ilk kesme noktasında duraklatılır.
İmleçte Çalıştır'ı seçtiğiniz kod satırına ulaşana kadar F5 tuşuna basın.
Bu komut, kodu düzenlerken ve hızlı bir şekilde geçici bir kesme noktası ayarlayıp hata ayıklayıcıyı aynı anda başlatmak istediğinizde kullanışlıdır.
Not
Hata ayıklarken Çağrı Yığını penceresinde İmleçle Çalıştır'ı kullanabilirsiniz.
Uygulamanızı hızlı bir şekilde yeniden başlatın
Hata Ayıklama Araç Çubuğu'nda Yeniden Başlat düğmesine tıklayın (veya Ctrl + Shift + F5 tuşlarına basın).
Yeniden Başlat'a bastığınızda, uygulama durdurulduğunda ve hata ayıklayıcı yeniden başlatıldığında zaman kazanır. Hata ayıklayıcı, kod yürütülerek isabet edilen ilk kesme noktasında duraklatılır.
Hata ayıklayıcıyı durdurmak ve kod düzenleyicisine geri dönmek istiyorsanız, Yeniden Başlat yerine kırmızı durdur düğmesine basabilirsiniz.
Canlı kod düzenleme
Visual Studio 2022, hata ayıklama sırasında canlı kod düzenlemeyi destekler. Ayrıntılı bilgi için bkz:
Kodunuzu düzenleyin ve hata ayıklamaya devam edin (C#, VB, C++, XAML)
Visual Studio tarafından desteklenen çoğu dilde kodunuzu hata ayıklama oturumunun ortasında düzenleyebilir ve hata ayıklamaya devam edebilirsiniz. Bu özelliği kullanmak için, hata ayıklayıcıda duraklatılmış durumdayken imlecinizle koduna tıklayın, düzenlemeler yapın ve hata ayıklamaya devam etmek için F5, F10 veya F11 tuşlarına basın. Bu özelliği kullanma ve özellik sınırlamaları hakkında daha fazla bilgi için bkz . Düzenleme ve Devam.
Hata ayıklama oturumu sırasında XAML kodunu değiştirmek için bkz. XAML Çalışırken Yeniden Yükleme ile çalışan XAML kodunu yazma ve hata ayıklama.
Veri ipuçlarıyla değişkenleri inceleme
Artık biraz yolunuzu bildiğinize göre, hata ayıklayıcıyla uygulama durumunuzu (değişkenleri) incelemeye başlamak için iyi bir fırsatınız olur. Değişkenleri incelemenize olanak sağlayan özellikler, hata ayıklayıcının en kullanışlı özelliklerinden bazılarıdır ve bunu yapmanın farklı yolları vardır. Genellikle bir sorunun hatalarını ayıklamaya çalıştığınızda, değişkenlerin belirli bir uygulama durumunda olmasını beklediğiniz değerleri depolayıp depolamadığını bulmaya çalışırsınız. Veri ipuçlarını kullanma hakkında ayrıntılı bilgi için bkz . Veri ipuçlarında veri değerlerini görüntüleme.
Hata ayıklayıcıda duraklatılırken fareyle bir nesnenin üzerine gelin ve değerini veya varsayılan özellik değerini görürsünüz.
Değişkenin özellikleri varsa, nesnesini genişleterek tüm özelliklerini görebilirsiniz.
Genellikle, hata ayıklarken nesnelerdeki özellik değerlerini denetlemek için hızlı bir yol istersiniz ve veri ipuçları bunu yapmak için iyi bir yoldur.
Otomatik Ve Yerel Ayarlar pencereleriyle değişkenleri inceleme
OtomatikLer penceresinde, değişkenlerin geçerli değerleri ve türleriyle birlikte olduğunu görürsünüz. OtomatikLer penceresi geçerli satırda veya önceki satırda kullanılan tüm değişkenleri gösterir (C++'da pencere, yukarıdaki üç kod satırındaki değişkenleri gösterir. Dile özgü davranış için belgeleri denetleyin). Bu pencereleri kullanma hakkında daha fazla bilgi için bkz . Autos and Locals pencerelerindeki değişkenleri inceleme.
Hata ayıklarken, kod düzenleyicisinin altındaki Otomatikler penceresine bakın.
Not
JavaScript'te YerelLer penceresi desteklenir, ancak Otomatikler penceresi desteklenmez.
Ardından Yerel ayarlar penceresine bakın. Yerel Ayarlar penceresinde, şu anda kapsamda olan değişkenler gösterilir.
Bu örnekte, this
nesnesi ve nesnesi f
kapsam içindedir. Daha fazla bilgi için bkz . Autos and Locals Windows'ta Değişkenleri İnceleme.
Saat ayarlama
İzleme penceresini, göz kulak olmak istediğiniz bir değişkeni (veya ifadeyi) belirtmek için kullanabilirsiniz. Ayrıntılı bilgi için bkz . Watch ve QuickWatch Pencerelerini kullanarak saat ayarlama.
Hata ayıklama sırasında bir nesneye sağ tıklayın ve Gözcü Ekle'yi seçin.
Bu örnekte, nesne üzerinde ayarlanmış bir izlemeniz vardır ve hata ayıklayıcıda ilerledikçe değer değişikliğini görebilirsiniz. Diğer değişken pencerelerinden farklı olarak, İzleme pencereleri her zaman izlediğiniz değişkenleri gösterir (kapsam dışındayken gri görünür).
Çağrı yığınını inceleme
Çağrı Yığını penceresi, yöntemlerin ve işlevlerin çağrılma sırasını gösterir. Üst satırda geçerli işlev gösterilir. İkinci satırda, çağrıldığı işlev veya özellik gösterilir ve bu şekilde devam eder. Çağrı yığını, bir uygulamanın yürütme akışını incelemek ve anlamak için iyi bir yoldur. Ayrıntılı bilgi için bkz . Nasıl yapılır: Çağrı Yığınını İnceleme.
Not
Çağrı Yığını penceresi, Eclipse gibi bazı IDE'lerde Hata Ayıklama perspektifine benzer.
Hata ayıklarken, sağ alt bölmede varsayılan olarak açık olan Çağrı Yığını penceresine tıklayın.
Bir kod satırına çift tıklayarak bu kaynak kodu inceleyebilir ve hata ayıklayıcı tarafından denetlenen geçerli kapsamı da değiştirebilirsiniz. Bu, hata ayıklayıcıyı ilerletmez.
Diğer işlemleri yapmak için Çağrı Yığını penceresindeki sağ tıklama menülerini de kullanabilirsiniz. Örneğin, belirli işlevlere kesme noktaları ekleyebilir, İmleçte Çalıştır'ı kullanarak uygulamanızı yeniden başlatabilir ve kaynak kodu inceleyebilirsiniz.
Özel durumu inceleme
Uygulamanız bir özel durum oluştururken hata ayıklayıcı sizi özel durum oluşturan kod satırına götürür. Ayrıntılı bilgi için bkz . Özel Durum Yardımcısı'nı kullanarak özel durumu inceleme.
Bu örnekte, Özel Durum Yardımcısı size bir System.NullReferenceException
özel durum ve nesne başvurusunun nesnenin bir örneğine ayarlanmadığını belirten bir hata iletisi gösterir. Ve yöntemini çağırmaya Trim
çalıştığınızda dize değerinin null olduğunu bildirir.
Bu örnekte, Özel Durum Yardımcısı size bir System.Argument
özel durum ve yolun yasal bir form olmadığını belirten bir hata iletisi gösterir. Bu nedenle, hatanın bir yöntem veya işlev bağımsız değişkeninde oluştuğundan eminiz.
Bu örnekte çağrı, DirectoryInfo
değişkende depolanan boş dizede hata verdi value
.
Özel Durum Yardımcısı, hata ayıklamanıza yardımcı olabilecek harika bir özelliktir. Ayrıca hata ayrıntılarını görüntüleme ve Özel Durum Yardımcısı'ndan bir saat ekleme gibi işlemler de yapabilirsiniz. Veya gerekirse, belirli bir özel durum oluşturma koşullarını değiştirebilirsiniz. Kodunuzda özel durumları işleme hakkında daha fazla bilgi için bkz . Hata ayıklama teknikleri ve araçları.
Bu özel durum türünün nasıl işleneceğini görmek için Özel Durum Ayarları düğümünü genişletin, ancak bu tur için hiçbir şeyi değiştirmeniz gerekmez!
İpucu
Copilot kullanıyorsanız özel durumlarda hata ayıklarken yapay zeka yardımı alabilirsiniz. Copilot'a Sor düğmesini arayın. Daha fazla bilgi için bkz . Copilot ile hata ayıklama.
Yapay zeka yardımı alma
Copilot kullanıyorsanız hata ayıklarken yapay zeka yardımı alabilirsiniz. Daha fazla bilgi için bkz . Copilot ile hata ayıklama. Hata ayıklama sırasında Copilot'a Sor düğmesini de arayabilirsiniz. Bu senaryolarda Copilot sorularınızın bağlamını zaten biliyor, bu nedenle Copilot sohbetinde bağlamı kendiniz sağlamanız gerekmez.
Hata ayıklamayı yapılandırma
Projenizi Hata Ayıklama veya Yayın yapılandırması olarak derlemek üzere yapılandırabilir, hata ayıklama için proje özelliklerini yapılandırabilir veya hata ayıklama için genel ayarları yapılandırabilirsiniz. Ayrıca, DebuggerDisplay özniteliği veya C/C++ için NatVis çerçevesi gibi özellikleri kullanarak özel bilgileri görüntülemek için hata ayıklayıcıyı yapılandırabilirsiniz.
Hata ayıklama özellikleri her proje türüne özeldir. Örneğin, uygulamayı başlattığınızda uygulamaya geçirebileceğiniz bir bağımsız değişken belirtebilirsiniz. Çözüm Gezgini'da projeye sağ tıklayıp Özellikler'i seçerek projeye özgü özelliklere erişebilirsiniz. Hata ayıklama özellikleri genellikle belirli proje türüne bağlı olarak Derleme veya Hata Ayıklama sekmesinde görünür.
Visual Studio 2022'den başlayarak. .NET projeleri için Hata Ayıklama sekmesi, hata ayıklamayla ilgili özellikleri ayarlayabileceğiniz hata ayıklama başlatma profilleri kullanıcı arabirimine bir bağlantı sağlar.
Azure Uygulaması Hizmeti'nde canlı ASP.NET uygulamalarında hata ayıklama
Azure Uygulaması Hizmeti'nde hata ayıklamak için bkz. Azure uygulamalarında hata ayıklama.
Visual Studio Enterprise (yalnızca) için Snapshot Debugger, ilgilendiğiniz kod yürütülürken üretim içi uygulamalarınızın anlık görüntüsünü alır. Hata ayıklayıcıya anlık görüntü almasını bildirmek için, kodunuzda snappoint'leri ve günlük noktalarını ayarlarsınız. Hata ayıklayıcı, üretim uygulamanızın trafiğini etkilemeden tam olarak neyin yanlış gittiğini görmenizi sağlar. Snapshot Debugger, üretim ortamlarında oluşan sorunları çözmek için gereken süreyi önemli ölçüde azaltmanıza yardımcı olabilir.
Anlık görüntü koleksiyonu, Azure Uygulaması Hizmetinde çalışan ASP.NET uygulamalar için kullanılabilir. ASP.NET uygulamalar .NET Framework 4.6.1 veya sonraki sürümlerinde, ASP.NET Core uygulamaları ise Windows üzerinde .NET Core 2.0 veya sonraki bir sürümde çalıştırılmalıdır.
Daha fazla bilgi için bkz . Snapshot Debugger kullanarak canlı ASP.NET uygulamalarında hata ayıklama.
IntelliTrace ile anlık görüntüleri görüntüleme geri adım (Visual Studio Enterprise)
IntelliTrace geri adım adım her kesme noktası ve hata ayıklayıcı adımı olayında uygulamanızın anlık görüntüsünü otomatik olarak alır. Kaydedilen anlık görüntüler önceki kesme noktalarına veya adımlara geri dönmenizi ve uygulamanın durumunu geçmişte olduğu gibi görüntülemenizi sağlar. IntelliTrace geri adımı, önceki uygulama durumunu görmek ancak hata ayıklamayı yeniden başlatmak veya istenen uygulama durumunu yeniden oluşturmak istemediğinizde size zaman kazandırabilir.
Hata Ayıklama araç çubuğundaki Geri Adım ve İleri Adım düğmelerini kullanarak anlık görüntülerde gezinebilir ve görüntüleyebilirsiniz. Bu düğmeler Tanılama Araçları penceresinin Olaylar sekmesinde görüntülenen olaylara gider.
Daha fazla bilgi için IntelliTrace kullanarak önceki uygulama durumlarını inceleme sayfasına bakın.
Performans sorunlarının hatalarını ayıklama
Uygulamanız çok yavaş çalışıyorsa veya çok fazla bellek kullanıyorsa, uygulamanızı erken saatlerde profil oluşturma araçlarıyla test etmeniz gerekebilir. CPU Kullanımı aracı ve Bellek Çözümleyicisi gibi profil oluşturma araçları hakkında daha fazla bilgi için bkz . Profil oluşturma araçlarına ilk bakış.
İlgili içerik
Bu öğreticide, birçok hata ayıklayıcı özelliğine hızlı bir bakış sağladınız. Kesme noktaları gibi bu özelliklerden birine daha ayrıntılı bir bakış isteyebilirsiniz.