2010-07-10 14 views
13

A. Net 4.0 uygulaması bir kullanıcı için kilitleniyor tutar, ancak sadece onun için, ben bugünü yeniden üretemedim. Windows Crash Reporter tarafından oluşturulan WERInternalMetadata.xml dosyasını ekledi. Bunu açarak, yazılımın çöktüğü bir System.IO.FileNotFoundException olduğunu öğrendim, ancak bu tür bir istisna atacak bir işlev bulunmadığı için, başka bir yerde veya daha derin bir sorun var.Windows Crash Reporter tarafından oluşturulan WERInternalMetadata.xml dosyası nasıl çözümlenir?

Bu, dosyanın "en ilginç" kısmıdır. İçerisinde (onaltılı) sayılar var, ama ne demek istediklerini anlayamadım.

<ProblemSignatures> 
    <EventType>CLR20r3</EventType> 
    <Parameter0>rstvshowtracker.exe</Parameter0> 
    <Parameter1>1.0.3842.33258</Parameter1> 
    <Parameter2>4c374e79</Parameter2> 
    <Parameter3>mscorlib</Parameter3> 
    <Parameter4>4.0.0.0</Parameter4> 
    <Parameter5>4ba1da6f</Parameter5> 
    <Parameter6>1620</Parameter6> 
    <Parameter7>14</Parameter7> 
    <Parameter8>System.IO.FileNotFoundException</Parameter8> 
</ProblemSignatures> 

kod duruma neden olur, ya da en azından FileNotFoundException daha biraz daha ayrıntılı bilgi edinmek için hangi öğrenmek için bir yolu var mı?

cevap

17

Öncelikle, burada o WER izlemesinde olan budur:

<Parameter0>rstvshowtracker.exe</Parameter0> - your exe 
<Parameter1>1.0.3842.33258</Parameter1> - version of your exe 
<Parameter2>4c374e79</Parameter2> - exe timestamp 
<Parameter3>mscorlib</Parameter3> - assembly/module 
<Parameter4>4.0.0.0</Parameter4> - assembly version 
<Parameter5>4ba1da6f</Parameter5> - assm timestamp 
<Parameter6>1620</Parameter6> - methodDef token of faulting method 
<Parameter7>14</Parameter7> - IL offset of faulting instruction 
<Parameter8>System.IO.FileNotFoundException</Parameter8> - exception 

O yöntem ne olduğunu öğrenmek için WinDBG ve SOS kullanabilirsiniz (örneğin 1620). http://blogs.msdn.com/b/oanapl/archive/2009/01/30/windows-error-reporting-wer-and-clr-integration.aspx

... Alternatif olarak, uygulamanızda UnhandledException olayı kanca olabilir ve sorunun nedeniyle görmek için, bir günlük dosyasına durum yığın izlemesi yazdırmak: bunu nasıl burada örneğe bakın ; Örneğin.

static void MyHandler(object sender, UnhandledExceptionEventArgs args) 
{ 
    Exception e = (Exception) args.ExceptionObject; 
    // print out the exception stack trace to a log 
} 

public static void Main() 
{ 
    AppDomain currentDomain = AppDomain.CurrentDomain; 
    currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler); 
} 
+2

Çok teşekkür ederim! Sahte kodu takip edebildim. Öte yandan, UnhandledException olayını yakalarım, ancak yeni bir konu üzerine bir istisna atılırsa, uygulama donar ve UnhandledException işlenmez. Yeni sürümde bunu iş parçacığı yerine Görevler kullanarak çözdüm, çünkü Görevler başka bir iş parçacığına atılan istisnaları yakalamamı sağlıyor. – RoliSoft

İlgili konular