Öğretici: Visual Studio kullanarak C++ kodunda hata ayıklamayı öğrenin
Bu makalede, adım adım izlenecek yolda Visual Studio hata ayıklayıcısının özellikleri tanıtılmaktadır. Hata ayıklayıcı özelliklerinin daha üst düzey bir görünümünü istiyorsanız, bkz . İlk olarak hata ayıklayıcıya bakma. Uygulamanızda hata ayıkladığınızda, genellikle uygulamanızı hata ayıklayıcı ekli olarak ç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 bakabilir, değerlerin ne zaman değiştiğini görmek için değişkenler üzerinde izlemeler ayarlayabilir, kodunuzun yürütme yolunu inceleyebilir, bir kod dalının çalışıp çalışmadığını görebilir vb. Kodda ilk kez hata ayıklamayı denediyseniz, bu makaleye geçmeden önce mutlak yeni başlayanlar için hata ayıklamayı okumak isteyebilirsiniz.
Tanıtım uygulaması C++ olsa da, özelliklerin çoğu C#, Visual Basic, F#, Python, JavaScript ve Visual Studio tarafından desteklenen diğer diller için geçerlidir (F# Düzenleme ve devam etme özelliğini desteklemez. F# ve JavaScript OtomatikLer penceresini desteklemez). Ekran görüntüleri C++ dilindedir.
Bu öğreticide şunları yapacaksınız:
- Hata ayıklayıcıyı başlatın ve kesme noktalarına basın.
- Hata ayıklayıcıda kodda adım adım ilerleyecek komutları öğrenin
- Veri ipuçlarında ve hata ayıklayıcı pencerelerinde değişkenleri inceleme
- Çağrı yığınını inceleme
Önkoşullar
Visual Studio'yu ve C++ iş yüküyle Masaüstü geliştirmeyi yüklemiş olmanız gerekir.
Visual Studio'yu henüz yüklemediyseniz Visual Studio indirmeleri sayfasına giderek ücretsiz yükleyin.
Visual Studio 2022'yi henüz yüklemediyseniz Visual Studio 2022 indirmeleri sayfasına giderek ücretsiz yükleyin.
İş yükünü yüklemeniz gerekiyorsa ancak Visual Studio'nuz zaten varsa Araçlar>Araçları ve Özellikleri Al...'e gidin ve bu da Visual Studio Yükleyicisi açar. Visual Studio Yükleyicisi başlatılır. C++ iş yüküyle Masaüstü geliştirme'yi ve ardından Değiştir'i seçin.
Bir proje oluştur
İlk olarak bir C++ konsol uygulaması projesi oluşturacaksınız. Proje türü, herhangi bir şey eklemeden önce ihtiyacınız olan tüm şablon dosyalarıyla birlikte gelir!
Visual Studio'yu açın.
Başlangıç penceresi açık değilse Dosya>Başlangıç Penceresi'ni seçin.
Başlangıç penceresinde Yeni proje oluştur'u seçin.
Yeni proje oluştur penceresinde, arama kutusuna konsol girin veya yazın. Ardından, Dil listesinden C++ öğesini ve ardından Platform listesinden Windows'u seçin.
Dil ve platform filtrelerini uyguladıktan sonra Konsol Uygulaması şablonunu ve ardından İleri'yi seçin.
Dekont
Konsol Uygulaması şablonunu görmüyorsanız, Yeni proje oluştur penceresinden yükleyebilirsiniz. Aradığınızı bulamıyor musunuz? iletisinde Daha fazla araç ve özellik yükle bağlantısını seçin. Ardından Visual Studio Yükleyicisi C++ iş yüküyle masaüstü geliştirme'yi seçin.
Yeni projenizi yapılandırın penceresinde, Proje adı kutusuna get-started-debugging yazın veya girin. Ardından Oluştur'u seçin.
Visual Studio yeni projenizi açar.
Uygulamayı oluşturma
get-started-debugging.cpp dosyasında, varsayılan kodun tümünü aşağıdaki kodla değiştirin:
#include <string> #include <vector> #include <iostream> void SendMessage(const std::wstring& name, int msg) { std::wcout << L"Hello, " << name << L"! Count to " << msg << std::endl; } int main() { std::vector<wchar_t> letters = { L'f', L'r', L'e', L'd', L' ', L's', L'm', L'i', L't', L'h' }; std::wstring name = L""; std::vector<int> a(10); std::wstring key = L""; for (int i = 0; i < letters.size(); i++) { name += letters[i]; a[i] = i + 1; SendMessage(name, a[i]); } std::wcin >> key; return 0; }
Hata ayıklayıcıyı başlatın!
Hata Ayıklama Araç Çubuğu'nda F5 (Hata AyıklamaYı > Başlat Hata Ayıklama) veya Hata Ayıklamayı Başlat düğmesine basın.
F5 , uygulamayı uygulama işlemine eklenmiş hata ayıklayıcıyla başlatır, ancak şu anda kodu incelemek için özel bir şey yapmadık. Böylece uygulama yüklenir ve konsol çıkışını görürsünüz.
Hello, f! Count to 1 Hello, fr! Count to 2 Hello, fre! Count to 3 Hello, fred! Count to 4 Hello, fred ! Count to 5 Hello, fred s! Count to 6 Hello, fred sm! Count to 7 Hello, fred smi! Count to 8 Hello, fred smit! Count to 9 Hello, fred smith! Count to 10
Bu öğreticide, hata ayıklayıcısını kullanarak bu uygulamaya daha yakından göz atacak ve hata ayıklayıcı özelliklerine göz atacağız.
Kırmızı durdurma düğmesine (Shift + F5) basarak hata ayıklayıcıyı durdurun.
Konsol penceresini kapatmak için konsol penceresinde bir tuşa ve Enter tuşuna basın.
Kesme noktası ayarlama ve hata ayıklayıcıyı başlatma
İşlev döngüsünde
for
main
, aşağıdaki kod satırının sol kenar boşluğuna tıklayarak bir kesme noktası ayarlayın:name += letters[i];
Kesme noktasını ayarladığınız yerde kırmızı bir daire görüntülenir.
Kesme noktaları, güvenilir hata ayıklamanın en temel ve temel özelliklerinden biridir. 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.
F5 tuşuna veya Hata AyıklamayıBaşlat düğmesine basın, uygulama başlatılır ve hata ayıklayıcı kesme noktasını ayarladığınız kod satırında çalışı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).
Uygulama henüz çalışmıyorsa, F5 hata ayıklayıcıyı başlatır ve ilk kesme noktasında durur. Aksi takdirde, F5 uygulamayı sonraki kesme noktasına çalıştırmaya devam eder.
Kesme noktaları, kod satırını veya kodun ayrıntılı olarak incelemek istediğiniz bölümünü bildiğinizde yararlı bir özelliktir. Koşullu kesme noktaları gibi ayarlayabileceğiniz farklı kesme noktası türleri hakkında bilgi için bkz . Kesme noktalarını kullanma.
Adım komutlarını kullanarak hata ayıklayıcıda kodda gezinme
Çoğunlukla burada klavye kısayollarını kullanırız çünkü uygulamanızı hata ayıklayıcıda yürütme konusunda hızlı bir yöntemdir (menü komutları gibi eşdeğer komutlar parantez içinde gösterilir).
yöntemindeki döngüde duraklatılırken, yöntem çağrısına
for
main
ilerlemekSendMessage
için F11 tuşuna iki kez basın (veya Adım hatalarını ayıkla'yı > seçin).F11'e iki kez bastıktan sonra şu kod satırında olmanız gerekir:
SendMessage(name, a[i]);
Yöntemine geçmek için F11 tuşuna
SendMessage
bir kez daha basın.Sarı işaretçi yöntemine
SendMessage
ilerler.F11, Adımla komutudur ve uygulama yürütme işlemini her seferinde bir deyimle ilerler. 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).
Yöntemini incelemeyi tamamladığınızdan
SendMessage
ve yöntemden çıkmak ancak hata ayıklayıcıda kalmak istediğinizi varsayalım. Bunu, Dışarı Adımla komutunu kullanarak yapabilirsiniz.Shift + F11 tuşuna basın (veya Hata Ayıklama > Adımı Dışarı).
Bu komut, geçerli yöntem veya işlev dönene kadar uygulama yürütmeyi sürdürür (ve hata ayıklayıcıyı ilerletir).
yönteminde döngüye
for
main
geri dönmeniz, yöntem çağrısındaSendMessage
duraklatılmış olmanız gerekir.Yöntem çağrısına yeniden dönene kadar F11 tuşuna
SendMessage
birkaç kez basın.Yöntem çağrısında duraklatılırken F10 tuşuna bir kez basın (veya Hata Ayıkla Adım Üzerinde'yi >seçin).
Bu kez hata ayıklayıcının yöntemine
SendMessage
adım atmadığını fark edin. 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). Yöntem çağrısında F10 tuşuna basarak (F11 yerine), uygulamaSendMessage
kodunu atladık (şu anda ilgilenmemiş olabiliriz).SendMessage
Kodunuz arasında gezinmenin farklı yolları hakkında daha fazla bilgi için bkz . Hata ayıklayıcıda kodda gezinme.
Tıkla'ya Çalıştır'ı kullanarak kodda gezinme
Kesme noktasına ilerlemek için F5 tuşuna basın.
Kod düzenleyicisinde ekranı aşağı kaydırın ve sol tarafta yeşil Tıklamak için Çalıştır düğmesi görünene kadar yöntemdeki işlevin
SendMessage
üzerinestd::wcout
gelin. Düğmenin araç ipucunda "Yürütmeyi buradan çalıştır" gösterilir.Dekont
Tıkla çalıştır düğmesi Visual Studio 2017'de yenidir. (Yeşil ok düğmesini görmüyorsanızHata ayıklayıcısını doğru yere ilerletmek için bu örnekteki F11 .)
Tıklatılacak Çalıştır düğmesine tıklayın.
Hata ayıklayıcı işlevine
std::wcout
ilerler.Bu düğmeyi kullanmak, geçici kesme noktası ayarlamaya benzer. Tıklayarak Çalıştır, uygulama kodunun görünür bir bölgesinde hızla gezinmek için kullanışlıdır (herhangi bir açık dosyaya tıklayabilirsiniz).
Uygulamanızı hızlı bir şekilde yeniden başlatın
Hata Ayıklama Araç Çubuğu'nda (Ctrl + Shift + F5) Yeniden Başlat düğmesine tıklayı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ı, döngü içinde daha önce ayarladığınız for
kesme noktasında yeniden durur.
Veri ipuçlarıyla değişkenleri inceleme
Değişkenleri incelemenize olanak sağlayan özellikler, hata ayıklayıcının en kullanışlı özelliklerinden biridir ve bunu yapmanın farklı yolları vardır. Genellikle, bir sorunun hatalarını ayıklamaya çalıştığınızda, değişkenlerin belirli bir zamanda olmasını beklediğiniz değerleri depolayıp depolamadığını bulmaya çalışırsınız.
deyimi üzerinde duraklatılırken değişkenin
name += letters[i]
üzerine gelin ve değişkeninletters
varsayılan değerisize={10}
olan öğesini görürsünüz.Değişkenin
letters
içerdiği tüm öğeleri içeren özelliklerini görmek için değişkeni genişletin.Ardından değişkenin üzerine gelin ve değişkenin
name
geçerli değerini boş bir dize olarak görürsünüz.Döngüde birkaç kez yinelemek için F5 (veya Hata Ayıklama>Devamı) tuşuna birkaç kez basın, kesme noktasında yeniden duraklatın ve değerini denetlemek için her seferinde değişkenin
name
üzerine gelin.for
Değişkenin değeri döngünün her yinelemesiyle
for
değişir ve ardından ,fr
fre
ve gibi değerlerinif
gösterir.Genellikle hata ayıklarken, değişkenlerdeki özellik değerlerini denetlemek, depolamalarını beklediğiniz değerleri depolayıp depolamadıklarını görmek 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
Kod düzenleyicisinin en altındaki Otomatikler penceresine bakın.
Kapalıysa, Windows>Otomatik Hata Ayıklama'yı>seçerek hata ayıklayıcıda duraklatılmış durumdayken açın.
Otomatikler penceresinde değişkenleri ve geçerli değerlerini görürsünüz. OtomatikLer penceresi geçerli satırda veya önceki satırda kullanılan tüm değişkenleri gösterir (Dile özgü davranış için belgeleri denetleyin).
Ardından, Otomatikler penceresinin yanındaki bir sekmedeki YerelLer penceresine bakın.
değişkenini
letters
, içerdiği öğeleri gösterecek şekilde genişletin.Yerel Ayarlar penceresi, geçerli kapsamdaki değişkenleri, yani geçerli yürütme bağlamını gösterir.
Saat ayarlama
Ana kod düzenleyicisi penceresinde değişkene
name
sağ tıklayın ve Gözcü Ekle'yi seçin.Kod düzenleyicisinin alt kısmında Gözcü penceresi açılır. İzleme penceresini, göz kulak olmak istediğiniz bir değişkeni (veya ifadeyi) belirtmek için kullanabilirsiniz.
Artık değişkende
name
bir saat kümeniz var ve hata ayıklayıcıda ilerledikçe değerinin değiştiğini görebilirsiniz. Diğer değişken pencerelerinden farklı olarak, İzleme penceresi her zaman izlediğiniz değişkenleri gösterir (kapsam dışındayken gri görünür).
Çağrı yığınını inceleme
Döngüde
for
duraklatılmış durumdayken, sağ alt bölmede varsayılan olarak açık olan Çağrı Yığını penceresine tıklayın.Kapalıysa, Windows>Çağrı Yığınında Hata Ayıkla'yı>seçerek hata ayıklayıcıda duraklatılmış durumdayken açın.
Yöntemde hata ayıklayıcı duraklamasını görene kadar F11'e
SendMessage
birkaç kez tıklayın. Çağrı Yığını penceresine bakın.Ç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 (bu uygulamadaki
SendMessage
yöntem) gösterilir. İkinci satır, yöntemindenmain
çağrıldığınıSendMessage
vb. gösterir.Dekont
Çağrı Yığını penceresi, Eclipse gibi bazı IDE'lerde Hata Ayıklama perspektifine benzer.
Çağrı yığını, bir uygulamanın yürütme akışını incelemek ve anlamak için iyi bir yoldur.
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 eylem hata ayıklayıcıyı ilerletmiyor.
Diğer işlemleri yapmak için Çağrı Yığını penceresindeki sağ tıklama menülerini de kullanabilirsiniz. Örneğin, belirtilen işlevlere kesme noktaları ekleyebilir, İmleçte Çalıştır'ı kullanarak hata ayıklayıcıyı ilerletebilir ve kaynak kodu inceleyebilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Çağrı Yığınını İnceleme.
Yürütme akışını değiştirme
İşlevi çalıştırmak için F11 tuşuna
std::wcout
iki kez basın.Hata ayıklayıcı yöntem çağrısında
SendMessage
duraklatılmış durumdaysa, fareyi kullanarak soldaki sarı oku (yürütme işaretçisi) yakalayın ve sarı oku bir satır yukarı, geri'yestd::wcout
taşıyın.F11 tuşuna basın.
Hata ayıklayıcı işlevi yeniden çalıştırır
std::wcout
(bunu konsol penceresi çıkışında görürsünüz).Yürütme akışını değiştirerek farklı kod yürütme yollarını test etme veya hata ayıklayıcıyı yeniden başlatmadan kodu yeniden çalıştırma gibi işlemler yapabilirsiniz.
Uyarı
Genellikle bu özelliğe dikkat etmeniz gerekir ve araç ipucunda bir uyarı görürsünüz. Başka uyarılar da görebilirsiniz. İşaretçiyi taşımak uygulamanızı önceki bir uygulama durumuna geri döndüremez.
Uygulamayı çalıştırmaya devam etmek için F5 tuşuna basın.
Bu öğreticiyi tamamladıktan sonra tebrikler!
Sonraki adımlar
Bu öğreticide hata ayıklayıcıyı başlatmayı, kodda adım adım ilerleyip değişkenleri incelemeyi öğrendiniz. Daha fazla bilgi için bağlantılarla birlikte hata ayıklayıcısı özelliklerine üst düzey bir bakış elde etmek isteyebilirsiniz.