Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Hata: hata ayıklayıcısını adlı işlenmeyen özel durum süzgeci

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

173652
Belirtiler
Win32 işlemleri bir __try / __except bloğu işlemi çapında temelinde ele alınma özel durumları yakalamak üzere işlenmeyen özel durum filtresi işlevini yükleyebilirsiniz. Bir işlem hata ayıklama, içindeki bir kesme noktası koyduğunuzda işlenmeyen özel durum süzgeci hiçbir zaman, yürütüldüğünde, bulun. Işlem ayıklanacak değil, ancak, işlenmeyen özel durum süzgeci beklendiği gibi denir.
Neden
Ayıklanacak işleminden çağrıldığında, uygulamanın yüklü işlenmeyen özel durum süzgeci UnhandledExceptionFilter() Win32 API işlevini çağırmaz.

Not UnhandledExceptionFilter() API işlemi ayıklanacak olmadığını belirler. Işlem ayıklanacak, UnhandledExceptionFilter API, özel durumu için hata ayıklayıcısını geçirir. Sonra işlenmeyen özel durum süzgeci UnhandledExceptionFilter API işlemini çağırır.
Çözüm
UnhandledExceptionFilter. ayıklanacak olanların yanı sıra ayıklanacak işlemler için uygulama yüklenmemiş olarak, işlenmeyen özel durum süzgeci çağırmalısınız.

Işlenmeyen özel durum süzgeci işlevi bir hata ayıklamak için bir yoldur bir __try put / __except main() veya WinMain() içinde kod geçici bloğu gibi işlev:
   void main (int argc, char **argv)   {      __try      {      // all of code normally inside of main or WinMain here...      }      __except (MyUnFilter (GetExceptionInformation()))      {         OutputDebugString ("executed filter function\n");      }   }				
yalnızca main() veya WinMain() işlevi yürütmek için iş parçacığı adlı, bu iş etrafında biraz farklı bir işlenmeyen özel durum süzgecinden davranır. Çok iş parçacıklı bir uygulama hata ayıklaması yapıyorsanız ve benzer bir __try eklemek gereken, her iş parçacığı işlevi bloğu içinde __except /.

Istemediğiniz __try / bir işlenmeyen özel durum süzgeci hata ayıklamak için blokları __except onaylama işlemi gibi izleme gibi diğer yöntemleri kullanmanız gereken yeni eklemek için verir ve özel durum işleyici davranışını doğrulamak için hata ayıklama kodu.
Durum
Microsoft bu hatanın bu makalenin başında listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır. Biz bu hatayı araştırmak ve burada yeni bilgiler kullanılabilir olduğunda Microsoft Bilgi Bankası'ndaki deftere nakleder.
Daha fazla bilgi
Işlenmeyen özel durum süzgeci fonksiyonunun amacı, bir işlem dışında herhangi bir __try / bloğu __except oluşan özel durum yanıt olanağı vermek sağlamaktır. Işlenmeyen özel durum süzgeç işlemi çapında; herhangi bir iş parçacığı bir özel duruma neden olur, ancak bunu işlemez, işlenmeyen özel durum süzgeci adlı. Çağrıldığında, süzgeç işlevi özel durumun nedenini düzeltmek ve yürütülmesine devam edebilirsiniz ya da hata işlemi sonlandırır varsayılan işlenmeyen özel durum işleyicisine iletebilirsiniz.

Win32 uygulamaları bir işlem çapında işlenmeyen özel durum süzgeci SetUnhandledExceptionFilter() API işlevini kullanarak yükleyebilirsiniz. Microsoft Visual C++ C çalışma zamanı (CRT) kitaplığını başlatma kodunu bir __try uygulayan / __except main() işlevi geçici bloğu. Bir özel durum Bu bloğu tarafından yakalanan iletiler, kendi özel durum filtresi işlevini _XcptFilter, adlı denir. _XcptFilter iki yaptıklarının: Win32 özel signal() CRT işlev tarafından kullanılan sinyallerini eşleştirir ve için uygun işleyicileri sinyalleri gönderir. Ise (varsayılan olarak olduğu gibi), sinyal 's işleyicisi SIG_DFL için ayarlanır, _XcptFilter UnhandledExceptionFilter() APı'SINI çağırır.

UnhandledExceptionFilter() API işlemi ayıklanacak olmadığını belirler. Ardından UnhandledExceptionFilter özel durumu için hata ayıklayıcısını ilk geçirir. ve sonra işlemin işlenmeyen özel durum süzgeci call beklenir.

Daha sonra işlem ayıklanacak değil, UnhandledExceptionFilter işlemin işlenmeyen özel durum süzgeci çağırır. Bağlı olarak süzgeç işlevin dönüş değeri, UnhandledExceptionFilter yürütme özel durumu sırasında noktasına, devam veya uygulama işlenmeyen bir özel durum nedeniyle sona erdirilecek olan kullanıcıyı bilgilendiren bir sistem kalıcı iletişim kutusu görüntüler.

Davranışı yeniden oluşturma adımları

Aşağıdaki örnek kodu derlemek ve kesme noktası MyUnFilter içinde ayarlayın. Kesme hiçbir zaman isabet inceleyin.
   /*      Demonstrates how to use SEH so that unhandled exception filter      can trap unhandled instructions.   */    #include <windows.h>   #include <stdio.h>   LONG WINAPI MyUnFilter (struct _EXCEPTION_POINTERS *lpExceptionInfo);   void main (void)   {      LPBYTE lpBuff = NULL;      SetUnhandledExceptionFilter (MyUnFilter);      *lpBuff = 54;   }   LONG WINAPI MyUnFilter (struct _EXCEPTION_POINTERS *lpExceptionInfo)   {      static int s_SigCount = 0;      DWORD dwExceptCode = lpExceptionInfo -> ExceptionRecord ->                           ExceptionCode;      LONG  lResult;      if (dwExceptCode == EXCEPTION_ACCESS_VIOLATION)      {         printf ("access violation caught by MyUnFilter\n");         ++s_SigCount;         // test case to keep this from going on forever (since we're not         // fixing the AV)            if (s_SigCount < 5)               lResult = EXCEPTION_CONTINUE_EXECUTION;            else               lResult = EXCEPTION_EXECUTE_HANDLER;      }      else         lResult = EXCEPTION_CONTINUE_SEARCH;      return lResult;   }				

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 173652 - Son İnceleme: 11/21/2006 15:44:03 - Düzeltme: 4.4

  • Microsoft Win32 Uygulama Programlama Arabirimi
  • kbmt kbbug kbexcepthandling kbkernbase kbpending KB173652 KbMttr
Geri bildirim