Makale numarası: 173260 - Son Gözden Geçirme: 21 Kasım 2006 Salı - Gözden geçirme: 4.5 Hata ayıklaması eşitleme hatası
BelirtilerWindows NT altında bir uygulama hata ayıklaması yaptığınız sırada bir eşitleme nesnesi üzerinde bekleyen iş parçacığı (örneğin, PulseEvent() veya SetEvent()/ResetEvent() birlikte) serbest bırakılmayabilir. NedenBu belirti, hata ayıklama ortamı Win32 altında ilgili bir anomaly ' dir. Yalnızca WinDBG ve Visual C++ hata ayıklayıcıyı herhangi bir sürümü de dahil olmak üzere, bir Win32 hata altında ortaya çıkar. ÇözümSleep(0) PulseEvent() veya SetEvent()/ResetEvent() aramalar büyük olasılıkla bu sorunun oluşmaması için ancak bu da önce yerleştirme ya da garanti. Ne yazık ki, bu durum için garantili hiçbir geçici çözüm vardır. DurumBu belirti yok, ancak hata yerine bir tarafı Windows NT altında hata ayıklama etkin olduğunu unutmayın. Bu davranışı değiştirmek için geçerli planlanmamaktadır vardır. Bu anomaly bir hata ayıklama ortamı dışında gerçekleşmeyecek dikkate almak önemlidir. Daha fazla bilgiUygulama bir hata ayıklama ortamında çalışırken, bir olay nesnesi üzerinde bekleyen bir iş parçacığının serbest PulseEvent() başlatılamayabilir. Bu, kodu olup olmadığı ile hata ayıklama bilgilerini derlendi bakmaksızın geçerlidir. Bu da olup debuggee gönderilmekte "tek stepped." veya "git" komutu yürütülmeden bakılmaksızın Sorun, birden fazla iş parçasının aynı olayı bekliyor ortaya olasılığı daha yüksektir. Bekleyen iş parçacığı yayımlamayı hatası, bu iş parçacığı tarafından OutputDebugString() neden olduğu gibi oluşan hata ayıklama olayı ise daha olası hala olur. OutputDebugString() PulseEvent() doğrudan bir ça?r? önce bir çağrı yerleştirmek hata ayıklama ortamında çıkarmasını değil, düzenli olarak bekleyen bir iş parçacığının neden etkili bir yoldur. Win32 hata ayıklama ortamı, yaygın olarak iş parçacığı askıya aldığından olur. Bu durumda, geçerli durumu iş parçacığının çeker ve "askıya almak" bir olayda beklemeniz için neden olur. Bu tür askıda kalma, dahili olarak her hata ayıklama olayı oluşur. Iş parçacıkları, sürdürülüyor, önceki bekleme durumlarına geri yerleştirilir. Bir iş parçacığı bir hata ayıklama askıya alınmış durumdayken PulseEvent() oluşursa, bu iş parçacığı için darbeli kaybolur. Bu da bir iş parçacığının SuspendThread() kullanarak bir uygulama tarafından askıya geçerlidir. Bu davranış, PulseEvent() için sınırlı değildir. Bekleyen iş parçacığı hızlı SetEvent()/ResetEvent() çifti de dahil olmak üzere diğer senaryolarda da, "hata ayıklama askıya için" açıktır. Yukarıda belirtildiği gibi önce tüm PulseEvent() veya SetEvent() çağrı Sleep(0) arama bu sorunun olası bir geçici çözüm koymaktır. Bu iş parçacığı gönderilmekte fırsatı yeniden bekleyen başlatmaya devam verir, çünkü bu çoğu durumda, sorunu çözdü. Bu anomaly bir hata ayıklama ortamı dışında gerçekleşmeyecek dikkate almak önemlidir. Bu makaledeki bilginin uygulandığı durum:
Otomatik TercümeÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir. Makalenin İngilizcesi aşağıdaki gibidir:173260
(http://support.microsoft.com/kb/173260/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukMakale çevirileri |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Üste