Öğretici: Visual Studio kullanarak C++ kodunda hata ayıklamayı öğrenin
Şunlar için geçerlidir:Visual Studio
Mac için Visual Studio
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!
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 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.
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.
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
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
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.
Kırmızı dur
düğmesine (Shift + F5) basarak hata ayıklayıcıyı durdurun.
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
İş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];
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.
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ına kadar ç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 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.
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 yoldur (menü komutları gibi eşdeğer komutlar parantez içinde gösterilir).
yöntemindeki
for
döngüde duraklatılırken, yöntem çağrısınamain
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]);
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 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.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
for
main
geri dönmeniz ve 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ındaSendMessage
F10 tuşuna basarak (F11 yerine), uygulamaSendMessage
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.
Tıklamak için Ç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
SendMessage
yeşil Tıklamak için Çalıştır düğmesi Çalıştır'agörünene kadar yöntemdeki işlevin üzerine
std::wcout
gelin. Düğmenin araç ipucunda "Yürütmeyi burada çalıştır" gösterilir.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.)
Tıklatılacak Çalıştır düğmesine
.
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 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.
deyiminde
name += letters[i]
duraklatılırken değişkenin ü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şkenini genişletin.Ardından değişkenin üzerine gelin ve değişkenin
name
geçerli değerini (boş bir dize) görürsünüz.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şkeninname
üzerine gelin.değişkeninin değeri döngünün her yinelemesiyle
for
birlikte değişir ve ardından ,fr
vefre
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.
OtomatikLer ve Yereller pencereleriyle değişkenleri inceleme
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).
Ardından, OtomatikLer penceresinin yanındaki bir sekmede YerelLer penceresine bakın.
değişkenini
letters
genişleterek içerdiği öğeleri gösterin.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 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
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.
Yöntemde hata ayıklayıcının duraklatılmış olduğunu 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ırda yöntemindenmain
ç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
İş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ı doğru geri taşıyınstd::wcout
.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.
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.