Öğretici: Visual Studio kullanarak C++ kodunda hata ayıklamayı öğrenin

Şunlar için geçerlidir:evetVisual Studio hayır Mac için Visual Studio hayır Visual Studio Code

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ısı ö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, bu 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ığına bakabilirsiniz vb. Kodda ilk kez hata ayıklamayı denediyseniz, bu makaleyi gözden geçirmeden önce mutlak yeni başlayanlar için Hata Ayıklama'yı 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üzenle ve devam et ö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ıdaki kodda adım adım ilerleyebileceğiniz 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++ ile Masaüstü geliştirme iş yükünü yüklemiş olmanız gerekir.

Visual Studio'yu henüz yüklemediyseniz, ücretsiz yüklemek için Visual Studio indirmeleri sayfasına gidin.

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 Zaten Visual Studio'nuz varsa Araçlar Araçları>ve Özellikleri Al...'e gidin ve Visual Studio Yükleyicisi açılır. Visual Studio Yükleyicisi başlatılır. C++ ile Masaüstü geliştirme iş yükünü ve ardından Değiştir'i seçin.

Proje oluşturma

İ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!

  1. Visual Studio'yu açın.

    Başlangıç penceresi açık değilse Dosya>Başlangıç Penceresi'ni seçin.

  2. Başlangıç penceresinde Yeni proje oluştur'u seçin.

  3. Yeni proje oluştur penceresinde, arama kutusuna konsol yazın veya yazın. Ardından Dil listesinden C++ 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.

    Konsol Uygulaması için C++ şablonunu seçme işleminin ekran görüntüsü.

    Konsol Uygulaması için C++ şablonunu seçme işleminin ekran görüntüsü.

    Not

    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++ ile masaüstü geliştirme iş yükünü seçin.

  4. 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.

Uygulama oluşturma

  1. 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!

  1. Hata Ayıklama Araç Çubuğu'nda F5 (Hata AyıklamaYı > Başlat Hata Ayıklama) veya Hata Ayıklamayı Başlat düğmesi Hata Ayıklamayı Başlat 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. Bu nedenle 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ısı özelliklerine göz atacağız.

  2. Kırmızı dur Hata Ayıklamayı Durdur Hata Ayıklamayı Durdur düğmesine (Shift + F5) basarak hata ayıklayıcıyı durdurun.

  3. Konsol penceresinde, konsol penceresini kapatmak için bir tuşa ve Enter tuşuna basın.

Kesme noktası ayarlama ve hata ayıklayıcısını başlatma

  1. İşlev döngüsünde formain , 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 kırmızı daire kesme noktası 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, belleğin davranışına veya bir kod dalının çalıştırılıp çalıştırılmadığına göz atabilmeniz için Visual Studio'nun çalışan kodunuzu nerede askıya alacağını gösterir.

  2. F5 tuşuna veya Hata Ayıklamayı Başlat düğmesine Hata Ayıklamayı Başlat Hata basın, uygulama başlatılır ve hata ayıklayıcı kesme noktasını ayarladığınız kod satırına kadar çalışır.

    Kesme noktasını ayarlama ve kesme noktasına basma ekran görüntüsü.

    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 ayrıntılı olarak incelemek istediğiniz kod 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.

Ç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 yoldur (menü komutları gibi eşdeğer komutlar parantez içinde gösterilir).

  1. yöntemindeki for döngüde duraklatılırken, yöntem çağrısına main ilerlemek için F11 tuşuna iki kez basın (veya Hata Ayıklama > Adımı'nıSendMessage seçin).

    F11'e iki kez bastıktan sonra şu kod satırında olmanız gerekir:

    SendMessage(name, a[i]);

  2. Yöntemine geçmek için F11 tuşuna SendMessage bir kez daha basın.

    Sarı işaretçi yöntemine SendMessage ilerler.

    Koda Geçmek için F11 kullanma ekran görüntüsü.

    F11 , Adımla komutudur ve uygulama yürütme işlemini bir kerede bir deyimle ilerletir. 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ı kullanıcı olmayan kodu atlar (daha fazla ayrıntı istiyorsanız, bkz. Yalnızca Kodum).

    Yöntemini incelemeyi SendMessage tamamladığınızdan ve yöntemden çıkmak ancak hata ayıklayıcıda kalmak istediğinizi varsayalım. Bunu , Dışarı Adımla komutunu kullanarak yapabilirsiniz.

  3. 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öntemindeki döngüye formain geri dönmeniz ve yöntem çağrısında SendMessage duraklatılmış olmanız gerekir.

  4. Yöntem çağrısına yeniden dönene kadar F11 tuşuna SendMessage birkaç kez basın.

  5. 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).

    F10 kullanarak Üzerine Adım at kodunun ekran görüntüsü.

    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 SendMessageF10 tuşuna basarak (F11 yerine), uygulama SendMessage kodunu atladık (şu anda ilgilenmeyebiliriz). Kodunuz arasında gezinmenin farklı yolları hakkında daha fazla bilgi için bkz. Hata ayıklayıcıda kodda gezinme.

  1. Kesme noktasına ilerlemek için F5 tuşuna basın.

  2. Kod düzenleyicisinde ekranı aşağı kaydırın ve sol tarafta SendMessage yeşil Tıklamak için Çalıştır düğmesi Çalıştır'atıklayarak görünene kadar yöntemdeki işlevin üzerine std::wcout gelin. Düğmenin araç ipucunda "Yürütmeyi burada çalıştır" gösterilir.

    Tıklamak için Çalıştır özelliğini kullanmanın ekran görüntüsü.

    Not

    Tıkla çalıştır düğmesi Visual Studio 2017'de yenidir. (Yeşil ok düğmesini görmüyorsanız, hata ayıklayıcıyı doğru yere ilerletmek için bu örnekte F11 kullanın.)

  3. Tıklatılacak Çalıştır düğmesine tıklayarak Çalıştır'a tıklayarak.

    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 Yeniden Başlat Uygulamayı düğmesine tıklayın (Ctrl + Shift + F5).

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.

  1. deyiminde name += letters[i] duraklatılırken değişkenin üzerine gelin ve değişkenin letters varsayılan değeri size={10}olan öğesini görürsünüz.

  2. Değişkenin letters içerdiği tüm öğeleri içeren özelliklerini görmek için değişkenini genişletin.

  3. Ardından değişkenin üzerine gelin ve değişkenin name geçerli değerini (boş bir dize) görürsünüz.

  4. Döngüde for 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.

    Veri ipucunu görüntüleme ekran görüntüsü.

    değişkeninin değeri döngünün her yinelemesiyle for birlikte değişir ve ardından , frve fregibi değerlerini fgö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.

OtomatikLer ve Yereller pencereleriyle değişkenleri inceleme

  1. Kod düzenleyicisinin altındaki Otomatikler penceresine bakın.

    Kapalıysa,Windows>Otomatik HatalarınıAyıkla'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).

  2. Ardından, OtomatikLer penceresinin yanındaki bir sekmede YerelLer penceresine bakın.

  3. değişkenini letters genişleterek içerdiği öğeleri gösterin.

    Yerel Ayarlar Penceresinde değişkenleri inceleme işleminin ekran görüntüsü.

    Yerel Ayarlar Penceresinde değişkenleri inceleme işleminin ekran görüntüsü.

    Yerel Ayarlar penceresi, geçerli kapsamdaki değişkenleri, yani geçerli yürütme bağlamını gösterir.

Saat ayarlama

  1. 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 penceresi kullanarak göz kulak olmak istediğiniz bir değişken (veya ifade) belirtebilirsiniz.

    Artık değişkende name bir saat kümeniz var ve hata ayıklayıcıda ilerlerken 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

  1. 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ındaHata Ayıkla'yı> seçerek hata ayıklayıcıda duraklatılmış durumdayken açın.

  2. Yöntemde hata ayıklayıcının duraklatılmış olduğunu görene kadar F11'eSendMessage birkaç kez tıklayın. Çağrı Yığını penceresine bakın.

    Çağrı yığınını inceleme işleminin ekran görüntüsü.

    Çağrı yığınını inceleme işleminin ekran görüntüsü.

    Ç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ırda yönteminden main çağrılan ve benzeri gösterilirSendMessage.

    Not

    Ç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.

    Bu kaynak koda bakmak için bir kod satırına çift tıklayabilirsiniz ve bu da hata ayıklayıcı tarafından incelenen geçerli kapsamı değiştirir. Bu eylem 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 hata ayıklayıcıyı ilerletebilir ve kaynak kodunu 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

  1. İşlevi çalıştırmak için F11 tuşuna std::wcout iki kez basın.

  2. 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ı doğru geri taşıyın std::wcout.

  3. 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 döndüremez.

  4. 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ısını başlatmayı, kodda adım adım ilerleyip değişkenleri incelemeyi öğrendiniz. Hata ayıklayıcısı özelliklerine ve daha fazla bilgi için bağlantılara üst düzey bir bakış elde etmek isteyebilirsiniz.