Share via


Visual Studio'da çok iş parçacıklı uygulamalarda hata ayıklama

İş parçacığı, işletim sisteminin işlemci süresi veren bir yönerge dizisidir. İşletim sisteminde çalışan her işlem en az bir iş parçacığından oluşur. Birden fazla iş parçacığına sahip işlemler çok iş parçacıklı olarak adlandırılır.

Birden çok işlemciye, çok çekirdekli işlemciye veya hiper iş parçacığı işlemlerine sahip bilgisayarlar birkaç eşzamanlı iş parçacığı çalıştırabilir. Birçok iş parçacığının kullanıldığı paralel işleme, program performansını büyük ölçüde geliştirebilir, ancak birçok iş parçacığını izlediğiniz için hata ayıklamayı da zorlaştırabilir.

Mükemmel paralel işleme her zaman mümkün değildir. İş parçacıkları bazen eşitlenmelidir. Bir iş parçacığının başka bir iş parçacığından bir sonuç beklemesi veya bir iş parçacığının başka bir iş parçacığının kullandığı kaynağa özel erişime ihtiyacı olabilir. Eşitleme sorunları, çok iş parçacıklı uygulamalarda hataların yaygın nedenlerinden biridir. Bazen iş parçacıkları hiç kullanılabilir olmayan bir kaynağı bekliyor olabilir. Bu, kilitlenme adlı bir koşula neden olur.

İş parçacıkları ve işlemler

İş parçacıkları ve süreçler bilgisayar bilimindeki ilgili kavramlardır. Her ikisi de belirli bir sırada yürütülmesi gereken yönerge dizilerini temsil eder. Ancak ayrı iş parçacıklarındaki veya işlemlerdeki yönergeler paralel olarak yürütülebilir.

İşlemler işletim sisteminde bulunur ve kullanıcıların program veya uygulama olarak gördüklerine karşılık gelir. Öte yandan, bir işlem içinde bir iş parçacığı vardır. Bu nedenle, iş parçacıkları bazen hafif işlemler olarak adlandırılır. Her işlem bir veya daha fazla iş parçacığından oluşur.

Birden çok işlemin varlığı, bir bilgisayarın aynı anda birden fazla görev gerçekleştirmesini sağlar. Birden çok iş parçacığının varlığı, bir işlemin paralel olarak gerçekleştirilecek çalışmayı ayırmasını sağlar. Çok işlemcili bir bilgisayarda işlemler veya iş parçacıkları farklı işlemcilerde çalıştırılabilir. Bu, gerçek paralel işlemeyi etkinleştirir.

Çok iş parçacıklı uygulamalarda hata ayıklama araçları

Visual Studio, çok iş parçacıklı uygulamalarda hata ayıklamak için farklı araçlar sağlar.

  • İş parçacıkları için, iş parçacıklarında hata ayıklamaya yönelik birincil araçlar İş Parçacıkları penceresi, kaynak pencerelerdeki iş parçacığı işaretçileri, Paralel Yığınlar penceresi, Paralel İzleme penceresi ve Hata Ayıklama Konumu araç çubuğudur. İş Parçacıkları penceresi ve Hata Ayıklama Konumu araç çubuğu hakkında bilgi edinmek için bkz. İzlenecek Yol: İş Parçacıkları penceresini kullanarak hata ayıklama. Parallel Stacks ve Parallel Watch pencerelerini kullanmayı öğrenmek için bkz. Çok iş parçacıklı uygulamada hata ayıklamaya başlama. her iki konu da iş parçacığı işaretleyicilerinin nasıl kullanılacağını gösterir.

  • Görev Paralel Kitaplığı (TPL) veya Eşzamanlılık Çalışma Zamanı kullanan kodlar için, hata ayıklamaya yönelik birincil araçlar Paralel Yığınlar penceresi, Paralel İzleme penceresi ve JavaScript'i de destekleyen Görevler penceresidir. Başlamak için bkz . İzlenecek yol: Paralel uygulamada hata ayıklama ve İzlenecek yol: C++ AMP uygulamasında hata ayıklama.

  • GPU'da iş parçacıklarında hata ayıklamak için birincil araç GPU İş Parçacıkları penceresidir. Bkz . Nasıl yapılır: GPU İş Parçacıkları penceresini kullanma.

  • İşlemler için birincil araçlar İşleme Ekle iletişim kutusu, İşlemler penceresi ve Hata Ayıklama Konumu araç çubuğudur.

Visual Studio ayrıca çok iş parçacıklı uygulamalarda hata ayıklarken yararlı olabilecek güçlü kesme noktaları ve izleme noktaları sağlar. Kesme noktalarını tek tek iş parçacıklarına yerleştirmek için kesme noktası koşullarını ve filtrelerini kullanın. İzleme noktaları, kilitlenmeler gibi sorunları incelemek için programınızın bozulmadan yürütülmesini izlemenizi sağlar. Daha fazla bilgi için bkz . Kesme noktası eylemleri ve izleme noktaları.

Kullanıcı arabirimine sahip çok iş parçacıklı bir uygulamada hata ayıklamak özellikle zor olabilir. Uygulamayı ikinci bir bilgisayarda çalıştırmayı ve uzaktan hata ayıklamayı kullanmayı düşünebilirsiniz. Daha fazla bilgi için bkz . Uzaktan hata ayıklama.

Aşağıdaki tabloda kullanılabilir bilgiler ve bu yerlerin her birinde gerçekleştirebileceğiniz eylemler gösterilmektedir:

Kullanıcı Arabirimi Kullanılabilir Bilgiler Gerçekleştirebileceğiniz Eylemler
İşleme Ekle iletişim kutusu Ekleyebileceğiniz Kullanılabilir İşlemler:

- İşlem adı (.exe)
- İşlem kimliği numarası
- Menü Çubuğu Başlığı
- Tür (Yönetilen v4.0; Yönetilen v2.0, v1.1, v1.0; x86; x64; IA64)
- Kullanıcı Adı (hesap adı)
- Oturum numarası
Eklenecek işlemi seçin

Uzak bir bilgisayar seçin

Uzak bilgisayarlara bağlanmak için aktarım türünü değiştirme
İşlemler penceresi Ekli İşlemler:

- İşlem Adı
- İşlem kimliği numarası
- İşlem .exe yolu
- Menü Çubuğu Başlığı
- Durum (Kesme. Çalışıyor)
- Hata ayıklama (Yerel, Yönetilen vb.)
- Aktarım türü (varsayılan, kimlik doğrulaması olmadan yerel)
- Aktarım Niteleyicisi (uzak bilgisayar)
Araçları:

-Eklemek
-Ayırmak
-Sonlandır

Kısayol menüsü:

-Eklemek
-Ayırmak
- Hata ayıklama durdurulduğunda ayırma
-Sonlandır
İş Parçacıkları penceresi Geçerli işlemdeki iş parçacıkları:

- İş Parçacığı Kimliği
- Yönetilen Kimlik
- Kategori (ana iş parçacığı, arabirim iş parçacığı, uzak yordam çağrı işleyicisi veya çalışan iş parçacığı)
- İş Parçacığı Adı
- İş parçacığının oluşturulduğu konum
-Öncelik
- Benzite Maskesi
- Askıya Alınan Sayı
- İşlem Adı
- Bayrak Göstergesi
- Askıya alındı göstergesi
Araçları:

-Arama
- Arama Arama Yığını
- Yalnızca kodumu bayrakla işaretle
- Özel Modül Seçimine Bayrak Ekle
- Gruplandırma ölçütü
-Sütun
- Çağrı yığınlarını genişletme/daraltma
- Grupları genişletme/daraltma
- İş Parçacıklarını Dondur/Çöz

Kısayol menüsü:

- Kaynakta iş parçacıklarını göster
- İş parçacığına geçme
- Çalışan bir iş parçacığını dondurma
- Donmuş ipliği çöz
- Ek çalışma için iş parçacığına bayrak ekleme
- Bir iş parçacığını kaldırma
- İş parçacığını yeniden adlandırma
- İş parçacıklarını gösterme ve gizleme

Diğer eylemler:

- Veri İpucunda bir iş parçacığının çağrı yığınını görüntüleme
Kaynak penceresi Sol cilt payı içindeki iş parçacığı göstergeleri tek veya birden çok iş parçacığını gösterir (varsayılan olarak kapalıdır, İş Parçacıkları penceresinde kısayol menüsü kullanılarak açılır) Kısayol menüsü:

- İş parçacığına geçme
- Ek çalışma için iş parçacığına bayrak ekleme
- Bir iş parçacığını kaldırma
Hata Ayıklama Konumu araç çubuğu - Geçerli işlem
- Uygulamayı askıya alma
- Uygulamayı sürdürme
- Uygulamayı askıya alma ve kapatma
- Geçerli iş parçacığı
- Geçerli iş parçacığı bayrağı durumunu değiştirme
- Yalnızca bayrak eklenmiş iş parçacıklarını göster
- Yalnızca geçerli işlemi göster
- Geçerli yığın çerçevesi
- Başka bir işleme geçme
- Uygulamayı askıya alma, sürdürme veya kapatma
- Geçerli işlemde başka bir iş parçacığına geçiş yapma
- Geçerli iş parçacığında başka bir yığın çerçevesine geçme
- Geçerli iş parçacıklarını bayrakla işaretleme veya kaldırma
- Yalnızca bayrak eklenmiş iş parçacıklarını göster
- Yalnızca geçerli işlemi göster
Paralel Yığınlar penceresi - Tek bir pencerede birden çok iş parçacığı için çağrı yığınları.
- Her iş parçacığı için etkin yığın çerçevesi.
- Herhangi bir yöntem için arayanlar ve arayanlar.
- Kilitlenme Algılama
- Belirtilen iş parçacıklarını filtreleyin
- Dış kod yığınlarını filtreleme
- Görevler görünümüne geçme
- bir iş parçacığını bayrakla işaretleme veya kaldırma
-Zoom
- Yığın Çerçevelerini Kopyala
- Tüm yığınları görüntü olarak kaydetme/dışarı aktarma
Paralel İzleme penceresi - Özellikle dikkat etmek istediğiniz bir iş parçacığını işaretleyebileceğiniz bayrak sütunu.
- Bir okun seçili çerçeveyi gösterdiği çerçeve sütunu.
- Makine, işlem, kutucuk, görev ve iş parçacığını görüntüleyebilen yapılandırılabilir bir sütun.
- bir iş parçacığını bayrakla işaretleme veya kaldırma
- Yalnızca bayrak eklenmiş iş parçacıklarını görüntüleme
- Çerçeveleri değiştirme
- Sütunu sıralama
- Grup iş parçacıkları
- İplikleri dondurma veya çözme
- Paralel İzleme penceresindeki verileri dışarı aktarma
Görevler penceresi - Görev kimliği, görev durumu (zamanlanmış, çalışıyor, bekleme, kilitlenme) ve göreve hangi iş parçacığının atandığı gibi nesneler hakkındaki Task bilgileri görüntüleyin.
- Çağrı yığınındaki geçerli konum.
- Oluşturma zamanında göreve geçirilen temsilci
- Geçerli göreve geçiş yapma
- Göreve bayrak ekleme veya görev bayraklarını kaldırma
- Görevi dondurma veya çözme
GPU İş Parçacıkları penceresi - Özellikle dikkat etmek istediğiniz bir iş parçacığını işaretleyebileceğiniz bayrak sütunu.
- Sarı okun geçerli iş parçacığını gösterdiği geçerli iş parçacığı sütunu.
- aynı konumdaki iş parçacığı sayısını görüntüleyen İş Parçacığı Sayısı sütunu.
- Her iş parçacığı grubunun bulunduğu kod satırını görüntüleyen Satır sütunu.
- Her iş parçacığı grubunun bulunduğu yönerge adresini görüntüleyen Adres sütunu.
- Adresin kodundaki konum olan Konum sütunu.
- İş parçacığının etkin mi yoksa engellenmiş mi olduğunu gösteren Durum sütunu.
- Satırdaki iş parçacıklarının kutucuk dizinini gösteren Kutucuk sütunu.
- Farklı bir iş parçacığına değiştirme
- Belirli bir kutucuğu ve yazışmayı görüntüleme
- Sütunu görüntüleme veya gizleme
- Sütuna göre sıralama
- Grup iş parçacıkları
- İplikleri dondurma veya çözme
- bir iş parçacığını bayrakla işaretleme veya kaldırma
- Yalnızca bayrak eklenmiş iş parçacıklarını görüntüleme