Jak debugować wyjątek nie obsługiwany przez CLR

Zajmuję się tworzeniem aplikacji .NET, która zawiesza się w pozornie przypadkowych czasach. Ma odniesienia do niezarządzanej biblioteki DLL, która, jak podejrzewam, rzuca wyjątek, który nie jest obsługiwany. Gdy aplikacja ulega awarii, otrzymuję ten komunikat, gdy nie jest podłączony żaden debugger (skompilowany jako kliknięcie):

W tym momencie mogę dołączyć VS2012 jako debuger i zobaczyć stos wywołań:

>   ntdll.dll!77e015de()    Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
ntdll.dll!77e015de()    Unknown
ntdll.dll!77e8861b()    Unknown
ntdll.dll!77eae656()    Unknown
ntdll.dll!77eae6d3()    Unknown
ntdll.dll!77e573bc()    Unknown
ntdll.dll!77e57261()    Unknown
ntdll.dll!77e3b459()    Unknown
ntdll.dll!77e3b42b()    Unknown
ntdll.dll!77e3b3ce()    Unknown
ntdll.dll!77df0133()    Unknown
msvcr100.dll!71fb0269() Unknown
msvcr100.dll!71fb0146() Unknown
mfc100.dll!6c9e3bef()   Unknown
kernel32.dll!76ba14dd() Unknown
msvcr100.dll!71fb016a() Unknown
mfc100.dll!6cbbb734()   Unknown
DataRayOcx.ocx!095fe026()   Unknown
kernel32.dll!76ba14dd() Unknown
msvcr100.dll!71fb016a() Unknown
mfc100.dll!6cbbb734()   Unknown
mfc100.dll!6c9e3e62()   Unknown
DataRayOcx.ocx!096018c4()   Unknown
DataRayOcx.ocx!09603679()   Unknown
msvcr100.dll!71ffc556() Unknown
msvcr100.dll!71ffc600() Unknown
kernel32.dll!76ba33aa() Unknown
ntdll.dll!77e19ef2()    Unknown
ntdll.dll!77e19ec5()    Unknown

i wątki:

Not Flagged     5732    0   Worker Thread   msvcr100.dll thread 
DataRayOcx.ocx!09664787 Highest
Not Flagged     5480    0   Main Thread Main Thread clr.dll!70903e82    Normal
Not Flagged     4408    0   Worker Thread   MG17Comms.dll thread    mfc100.dll!6cb8e160 Normal
Not Flagged >   4428    0   Worker Thread   msvcr100.dll thread msvcr100.dll!71fb0269   Normal
Not Flagged     116 0   RPC Thread  RPC Callback Thread 1714fee0    Normal
Not Flagged     5808    0   Worker Thread   ntdll.dll thread    ntdll.dll!77e01f26  Normal
Not Flagged     5372    0   Worker Thread   clr.dll thread  clr.dll!7082c3a6    Normal
Not Flagged     5112    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     4928    0   Worker Thread   clr.dll thread  clr.dll!7090f1e3    Normal
Not Flagged     1380    0   Worker Thread   clr.dll thread  clr.dll!708219a3    Normal
Not Flagged     1632    0   Worker Thread   OphirLMMeasurement.dll thread   OphirLMMeasurement.dll!6ad4a94d Normal
Not Flagged     4324    0   Worker Thread   MG17Core.dll thread MG17Motor.ocx!10034e20  Normal
Not Flagged     5048    0   Worker Thread   clr.dll thread  nipalu.dll!6459a78a Normal
Not Flagged     5028    0   Worker Thread   clr.dll thread  msvcr110_clr0400.dll!72a551ed   Normal
Not Flagged     5556    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     4708    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     3352    0   Worker Thread   clr.dll thread  nipalu.dll!6459a78a Normal
Not Flagged     5256    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     6032    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     4692    0   Worker Thread   OphirLMMeasurement.dll thread   OphirLMMeasurement.dll!6add537a Normal
Not Flagged     6108    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     1504    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     1108    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     4652    0   Worker Thread   wdapi1031.dll thread    wdapi1031.dll!11513a0b  Normal
Not Flagged     2796    0   Worker Thread   OphirLMMeasurement.dll thread   OphirLMMeasurement.dll!6add5f80 Normal
Not Flagged     1036    0   RPC Thread  RPC Callback Thread ole32.dll!76e7a44e  Normal
Not Flagged     3424    0   Worker Thread   clr.dll thread  clr.dll!708d8274    Normal
Not Flagged     5424    0   Worker Thread   clr.dll thread  clr.dll!708f7bc5    Highest
Not Flagged     504 0   Worker Thread   ntdll.dll thread    ntdll.dll!77e0013d  Normal
Not Flagged     2380    0   Worker Thread   clr.dll thread  clr.dll!70b10aed    Normal
Not Flagged     3060    0   Worker Thread   GdiPlus.dll thread  GdiPlus.dll!7327795b    Normal
Not Flagged     3672    0   Worker Thread   clr.dll thread  System.Windows.Forms.ni.dll!6ddfe8e1    Normal
Not Flagged     5268    0   Worker Thread   msiltcfg.dll thread msiltcfg.dll!7371187a   Normal
Not Flagged     1232    0   Worker Thread   msvcr100.dll thread msvcr100.dll!71fb326f   Normal
Not Flagged     5588    0   Worker Thread   clr.dll thread  clr.dll!7090fee1    Normal
Not Flagged     4080    0   Worker Thread   clr.dll thread  clr.dll!708598cd    Normal
Not Flagged     5380    0   Worker Thread   msvcr100.dll thread DataRayOcx.ocx!095cd1ed Normal
Not Flagged     5328    0   Worker Thread   System.Data.dll thread  System.Data.dll!7140b7fd    Normal
Not Flagged     5744    0   Worker Thread   AS5216.dll thread   AS5216.dll!061d3e74 Normal
Not Flagged     2952    0   Worker Thread   AS5216.dll thread   AS5216.dll!061d01dd Above Normal
Not Flagged     3008    0   Worker Thread   AS5216.dll thread   AS5216.dll!061d8e2e Above Normal
Not Flagged     4728    0   Worker Thread   clr.dll thread  clr.dll!7090f1e3    Normal
Not Flagged     2972    0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     3804    0   Worker Thread   nirpc.dll thread    nirpc.dll!6460546a  Normal
Not Flagged     6064    0   Worker Thread   msvcr90.dll thread  mxsout.dll!1b45be1b Normal
Not Flagged     3728    0   Worker Thread   msvcr90.dll thread  mxsout.dll!1b45bd23 Normal
Not Flagged     768 0   Worker Thread   clr.dll thread  clr.dll!7099e9de    Normal
Not Flagged     6096    0   Worker Thread   clr.dll thread  clr.dll!70827f40    Normal

Ale naprawdę nie wiem, jak je czytać. Widzę, że to pierwsza liniaNot Flagged 5732 0 Worker Thread msvcr100.dll thread DataRayOcx.ocx!09664787 Highest ma najwyższy priorytet, co sprawia, że ​​jestem podejrzliwy wobec tego komponentu.

Czasami jestem w stanie złapać wyjątek i uzyskać tę wiadomość:

'External component has thrown an exception.' in System.Windows.Forms.DispatchMessageW() as System.IntPtr
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at Utilities.StartupForm.Main() in C:\...\Utilities\Forms\StartupForm.vb:line 102

Poza zgadywaniem, na czym polega problem z informacjami o debuggerze, jaki jest dobry sposób debugowania tego typu wyjątku? Używamy oprogramowania innych firm, więc gdy ich komponenty powodują wyjątki, muszę być w stanie ich ostrzec ... ale najpierw muszę dokładnie zidentyfikować problem.

questionAnswers(1)

yourAnswerToTheQuestion