Aracılığıyla paylaş


İzlenecek yol: İş Parçacıkları penceresini kullanarak çok iş parçacıklı bir uygulamada hata ayıklama (C#, Visual Basic, C++)

Çeşitli Visual Studio kullanıcı arabirimi öğeleri, çok iş parçacıklı uygulamalarda hata ayıklamanıza yardımcı olur. Bu makalede kod düzenleyicisi penceresinde, Hata Ayıklama Konumu araç çubuğunda ve İş Parçacıkları penceresinde çok iş parçacıklı hata ayıklama özellikleri tanıtılır . Çok iş parçacıklı uygulamalarda hata ayıklamaya yönelik diğer araçlar hakkında bilgi için bkz . Çok iş parçacıklı uygulamalarda hata ayıklamaya başlama.

Bu öğreticinin tamamlanması yalnızca birkaç dakika sürer ve çok iş parçacıklı uygulamalarda hata ayıklamanın temellerini size bildirir.

Çok iş parçacıklı uygulama projesi oluşturma

Bu öğreticide kullanmak için aşağıdaki çok iş parçacıklı uygulama projesini oluşturun:

  1. Visual Studio'yu açın ve yeni bir proje oluşturun.

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

    Başlangıç penceresinde Yeni proje'yi 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# veya C++ öğesini seçin ve ardından Platform listesinden Windows'u seçin.

    Dil ve platform filtrelerini uyguladıktan sonra .NET Core, .NET 5+ veya C++ için Konsol Uygulaması'nı ve ardından İleri'yi seçin.

    Dekont

    Doğru şablonu görmüyorsanız Araçlar Araç>ve Özellik Al...'e gidin ve Visual Studio Yükleyicisi açın. .NET masaüstü geliştirme veya C++ ile masaüstü geliştirme iş yükünü ve ardından Değiştir'i seçin.

    Yeni projenizi yapılandırın penceresinde, proje adı kutusuna bir ad yazın veya varsayılan adı kullanın. Ardından İleri'yi veya Oluştur'u (hangi seçenek varsa) seçin.

    .NET Core veya .NET 5+ için önerilen hedef çerçeveyi veya .NET 8'i seçin ve ardından Oluştur'u seçin.

    Yeni bir konsol projesi görüntülenir. Proje oluşturulduktan sonra bir kaynak dosya görüntülenir. Seçtiğiniz dile bağlı olarak, kaynak dosya Program.cs veya MyThreadWalkthroughApp.cpp olarak adlandırılabilir.

  2. Kaynak dosyadaki kodu, Çok iş parçacıklı uygulamalarda hata ayıklamaya başlama'daki C# veya C++ örnek koduyla değiştirin.

  3. Dosya>Tümünü Kaydet'i seçin.

Hata ayıklamayı başlatma

  1. Kaynak kodunda aşağıdaki satırları bulun:

    Thread.Sleep(3000);
    Console.WriteLine();
    
  2. Sol bölmeye Console.WriteLine(); tıklayarak veya çizgiyi seçip F9 tuşuna basarak satırda bir kesme noktası ayarlayın.

    Kesme noktası, kod satırının yanındaki sol cilt payı içinde kırmızı bir daire olarak görünür.

  3. Hata AyıklamaYı>Başlat Hata Ayıklama'yı seçin veya F5 tuşuna basın.

    Uygulama hata ayıklama modunda başlar ve kesme noktasında duraklatılır.

  4. Kesme modundayken, Windows>İş ParçacıklarındaHata Ayıkla'yı>seçerek İş Parçacıkları penceresini açın. İş Parçacıkları ve diğer hata ayıklama pencerelerini açmak veya görmek için bir hata ayıklama oturumunda olmanız gerekir.

İş parçacığı işaretleyicilerini inceleme

  1. Kaynak kodunda satırı bulun Console.WriteLine(); .

    1. İş Parçacıkları penceresine sağ tıklayın ve menüden KaynaktaShow Threads in Source İş Parçacıklarını Göster'i seçin.

    Kaynak kod satırının yanındaki cilt payı artık bir iş parçacığı işaretçisi simgesi Thread Markergörüntüler. İş parçacığı işaretçisi, bir iş parçacığının bu konumda durdurulduğunu gösterir. Konumda birden fazla durdurulmuş iş parçacığı varsa, multiple threads simge görüntülenir.

  2. İşaretçiyi iş parçacığı işaretçisinin üzerine getirin. Durdurulan iş parçacığı veya iş parçacıklarının adını ve iş parçacığı kimlik numarasını gösteren bir Veri İpucu görüntülenir. İş parçacığı adları olabilir <No Name>.

    Bahşiş

    Adsız iş parçacıklarını tanımlamaya yardımcı olmak için, bunları İş Parçacıkları penceresinde yeniden adlandırabilirsiniz. yazışmaya sağ tıklayın ve Yeniden Adlandır'ı seçin.

  3. Kısayol menüsündeki kullanılabilir seçenekleri görmek için kaynak koddaki iş parçacığı işaretçisine sağ tıklayın.

İş parçacıklarını bayrakla işaretleme ve işareti geri alma

Özellikle dikkat etmek istediğiniz iş parçacıklarını izlemek için iş parçacıklarına bayrak ekleyebilirsiniz.

Kaynak kod düzenleyicisinden veya İş Parçacıkları penceresinden iş parçacıklarına bayrak ekleyin ve iş parçacıklarını kaldırın. Hata Ayıklama Konumu veya İş Parçacıkları pencere araç çubuklarından yalnızca bayrak eklenmiş iş parçacıklarının mı yoksa tüm iş parçacıklarının görüntüleneceğini seçin. Herhangi bir konumdan yapılan seçimler tüm konumları etkiler.

Kaynak kodunda iş parçacıklarına bayrak ekleme ve iş parçacıklarını kaldırma

  1. Görünüm Araç Çubukları>Hata Ayıklama Konumu'nu >seçerek Hata Ayıklama Konumu araç çubuğunu açın. Araç çubuğu alanına sağ tıklayıp Konum Hatalarını Ayıkla'ya da tıklayabilirsiniz.

  2. Hata Ayıklama Konumu araç çubuğunda üç alan vardır: İşlem, İş Parçacığı ve Yığın Çerçevesi. İş Parçacığı listesini açın ve kaç iş parçacığı olduğuna dikkat edin. İş Parçacığı listesinde, yürütülmekte olan iş parçacığı bir > simgeyle işaretlenir.

  3. Kaynak kod penceresinde, cilt payı içindeki bir iş parçacığı işaretçisi simgesinin üzerine gelin ve Veri İpucu'ndaki bayrak simgesini (veya boş bayrak simgelerinden birini) seçin. Bayrak simgesi kırmızıya dönüşür.

    Ayrıca, bir iş parçacığı işaretçisi simgesine sağ tıklayabilir, Bayrak'ın üzerine gelebilir ve kısayol menüsünden bayrak eklemek için bir iş parçacığı seçebilirsiniz.

  4. Hata Ayıklama Konumu araç çubuğunda, İş Parçacığı alanının sağ tarafındaki Yalnızca Bayrak eklenmiş İş Parçacıklarını Göster simgesini Show Flagged Threadsseçin. Bir veya daha fazla iş parçacığı işaretlenmediği sürece simge gri görünür.

    Araç çubuğundaki İş Parçacığı açılan listesinde artık yalnızca bayrak eklenmiş iş parçacığı görüntülenir. Tüm iş parçacıklarını yeniden göstermek için Yalnızca Bayrak eklenmiş İş Parçacıklarını Göster simgesini yeniden seçin.

    Bahşiş

    Bazı iş parçacıklarına bayrak ekledikten sonra, imlecinizi kod düzenleyicisine yerleştirebilir, sağ tıklayabilir ve bayrak eklenmiş İş Parçacıklarını İmleçte Çalıştır'ı seçebilirsiniz. Tüm bayraklı iş parçacıklarının ulaşacağı kodu seçtiğinizden emin olun. İşaretli İş Parçacıklarını İmleç'e Çalıştır seçeneği, iş parçacıklarını seçilen kod satırında duraklatarak iş parçacıklarını dondurup çözerek yürütme sırasını denetlemeyi kolaylaştırır.

  5. Şu anda yürütülmekte olan iş parçacığının bayraklı veya bayraksız durumunu değiştirmek için, Yalnızca Bayrak eklenmiş İş Parçacıklarını Göster düğmesinin sol tarafındaki Geçerli İş Parçacığı Bayraklı Durumu Değiştir araç çubuğu düğmesini seçin. Geçerli iş parçacığını işaretlemek, yalnızca bayrak eklenmiş iş parçacıkları gösterilirken geçerli iş parçacığını bulmak için yararlıdır.

  6. Bir iş parçacığını şişirmek için kaynak koddaki iş parçacığı işaretçisinin üzerine gelin ve temizlemek için kırmızı bayrak simgesini seçin veya iş parçacığı işaretçisine sağ tıklayıp Şişirme'yi seçin.

İş Parçacıkları penceresinde iş parçacıklarına bayrak ekleme ve iş parçacıklarını kaldırma

İş Parçacıkları penceresinde bayrak eklenmiş iş parçacıklarının yanında kırmızı bayrak simgeleri bulunurken, etiketsiz iş parçacıklarının ise gösteriliyorsa boş ana hat simgeleri vardır.

Threads Window

İş parçacığı durumunu geçerli durumuna bağlı olarak bayraklı veya etiketsiz olarak değiştirmek için bir bayrak simgesi seçin.

Ayrıca, bir satıra sağ tıklayıp kısayol menüsünden Bayrak, Şişirme veya Tüm İş Parçacıklarını Şişirme'yi seçebilirsiniz.

İş Parçacıkları pencere araç çubuğunda ayrıca, iki bayrak simgesinden birinin sağ tarafındaki Bayraklı İş Parçacıklarını Göster düğmesi de vardır. Hata Ayıklama Konumu araç çubuğundaki düğmeyle aynı şekilde çalışır ve iki düğme de her iki konumda da ekranı denetler.

Diğer İş Parçacıkları penceresi özellikleri

İş Parçacıkları penceresinde, iş parçacıklarını bu sütuna göre sıralamak için herhangi bir sütunun üst bilgisini seçin. Sıralama düzenini tersine çevirmek için yeniden seçin. Tüm iş parçacıkları gösteriliyorsa, bayrak simgesi sütunu seçildiğinde iş parçacıkları bayraklı veya etiketsiz duruma göre sıralanır.

İş Parçacıkları penceresinin ikinci sütunu (üst bilgi olmadan) Geçerli İş Parçacığı sütunudur. Bu sütundaki sarı ok geçerli yürütme noktasını işaretler.

Konum sütunu, her iş parçacığının kaynak kodda nerede göründüğünü gösterir. Konum girişinin yanındaki genişletme okunu seçin veya bu iş parçacığının kısmi çağrı yığınını göstermek için girişin üzerine gelin.

Bahşiş

İş parçacıkları için çağrı yığınlarının grafik görünümü için Paralel Yığınlar penceresini kullanın. Hata ayıklarken pencereyi açmak için Windows>Paralel Yığınlarında Hata Ayıkla'yı> seçin.

Tüm İş Parçacıklarını Bayrakla, Şişirme ve Şişirme'ye ek olarak, İş Parçacığı pencere öğelerinin sağ tıklama bağlam menüsünde aşağıdakiler bulunur:

  • Kaynakta İş Parçacıklarını Göster düğmesi.
  • İş Parçacıkları penceresindeki İş Parçacığı Kimliklerini ondalıktan onaltılık biçime değiştiren onaltılık görüntü.
  • Yürütmeyi hemen bu iş parçacığına geçiren İş Parçacığına Geçiş Yapın.
  • İş parçacığı adını değiştirmenize olanak tanıyan yeniden adlandırın.
  • Freeze ve Thaw komutları.

İş parçacığı yürütmeyi dondurma ve çözme

İş parçacıklarının çalışma sırasını denetlemek için iş parçacıklarını dondurup çözebilir veya askıya alıp sürdürebilirsiniz. İş parçacıklarını dondurma ve çözme, kilitlenmeler ve yarış koşulları gibi eşzamanlılık sorunlarını çözmenize yardımcı olabilir.

Bahşiş

Aynı zamanda yaygın bir hata ayıklama senaryosu olan diğer iş parçacıklarını dondurmadan tek bir iş parçacığını izlemek için bkz . Çok iş parçacıklı uygulamalarda hata ayıklamaya başlama.

İş parçacıklarını dondurmak ve çözmek için:

  1. İş Parçacıkları penceresinde herhangi bir iş parçacığına sağ tıklayın ve dondur'u seçin. Geçerli İş Parçacığı sütunundaki Duraklat simgesi, iş parçacığının dondurulduğunu gösterir.

  2. İş Parçacıkları penceresi araç çubuğunda Sütunlar'ıseçin ve ardından Askıya Alınan Sayı'yı seçerek Askıya Alınan Sayı sütununu görüntüleyin. Dondurulan iş parçacığı için askıya alınan sayı değeri 1'dir.

  3. Donmuş yazışmaya sağ tıklayın ve Çöz'e tıklayın.

    Duraklat simgesi kaybolur ve Askıya Alınan Sayı değeri 0 olarak değişir.

Başka bir iş parçacığına geçme

Başka bir iş parçacığına geçmeye çalıştığınızda Uygulamanın kesme modunda olduğunu görebilirsiniz. Bu pencere, iş parçacığında geçerli hata ayıklayıcının görüntüleyebileceği herhangi bir kod olmadığını bildirir. Örneğin, yönetilen kodda hata ayıklanıyor olabilirsiniz, ancak iş parçacığı yerel koddur. Pencere, sorunu çözmeye yönelik öneriler sunar.

Başka bir iş parçacığına geçmek için:

  1. İş Parçacıkları penceresinde, Geçerli İş Parçacığı sütununda sarı ok bulunan iş parçacığı olan geçerli iş parçacığı kimliğini not edin. Uygulamanıza devam etmek için bu iş parçacığına geri dönmek isteyeceksiniz.

  2. Farklı bir iş parçacığına sağ tıklayın ve bağlam menüsünden İş Parçacığına Geç'i seçin.

  3. İş Parçacıkları penceresinde sarı ok konumunun değiştiğini gözlemleyin. Özgün geçerli iş parçacığı işaretçisi de ana hat olarak kalır.

    Kod kaynağı düzenleyicisindeki iş parçacığı işaretçisindeki araç ipucuna ve Hata Ayıklama Konumu araç çubuğundaki İş Parçacığı açılan listesinde yer alan listeye bakın. Geçerli iş parçacığının da burada değiştiğini gözlemleyin.

  4. Hata Ayıklama Konumu araç çubuğunda, İş Parçacığı listesinden farklı bir iş parçacığı seçin. Geçerli iş parçacığının diğer iki konumda da değiştiğini unutmayın.

  5. Kaynak kodu düzenleyicisinde bir iş parçacığı işaretçisine sağ tıklayın, İş Parçacığına Geç'in üzerine gelin ve listeden başka bir iş parçacığı seçin. Geçerli iş parçacığının üç konumda da değiştiğini gözlemleyin.

Kaynak kodundaki iş parçacığı işaretçisiyle, yalnızca bu konumda durdurulan iş parçacıklarına geçebilirsiniz. İş Parçacıkları penceresini ve Hata Ayıklama Konumu araç çubuğunu kullanarak herhangi bir iş parçacığına geçebilirsiniz.

Artık çok iş parçacıklı uygulamalarda hata ayıklamanın temellerini öğrendinsiniz. İş Parçacıkları penceresini, Hata Ayıklama Konumu araç çubuğundaki İş Parçacığı listesini veya kaynak kod düzenleyicisindeki iş parçacığı işaretleyicilerini kullanarak iş parçacıklarını gözlemleyebilir, işaretleyebilir ve süzebilir ve dondurabilir ve çözebilirsiniz.