2011-10-01 16 views
9

WCF ServiceHost barındıran bir işlem var. ProcessExplorer'a göre çıldırmış kolları sızdırıyor. Kodun üstünden geçtim ve sızdırılmış kollara sebep olan açık bir şey bulamadım.Bir Sızıntı sızıntısını nasıl teşhis edebilirim?

Ben gelebilir en yakın ProcessExplorer tarafından sağlanan kolları listesidir, ama bu faydası sınırlı görünmektedir. Bir yığın izi veya bir şey gibi bir tanıtıcının nereden geldiğini teşhis etmeye yardımcı olacak başka araçlar var mı? Ben yüklü Windbg var

DÜZENLEME.

Type   Event 
Attributes  0 
GrantedAccess 0x1f0003 
HandleCount 2 
PointerCount 3 
Object Specific Information 
    Event Type Manual Reset 
    Event is Set 
: Ben en çok bu gibi bir çıktı almak bunlardan birkaç seçerseniz

ve çıkış !handle x f kullanarak - Ben kolları listelemek için kullanabilirsiniz, 914 kolları tip "Etkinlik" nin olduğunu bana gösteriyor

Etkinlik hakkında daha fazla bilgi edinmek için daha fazla araştırmanın bir yolu var mı? Daha önce kötü cevap için üzgünüm

+2

Visual Studio Kod Analizi ya da FxCop) kaynakların düzgün bir şekilde atılamaması durumunda size söyleyecektir. –

+0

John, merak ediyorum, cevabınızı neden bir yorum olarak cevaplandırmadınız, bir cevap değil? –

+1

Bunun bir cevap olduğunu düşünmemiştim. Başka birisinin bu fikirle daha iyi bir iş yapmasını umuyordum. –

cevap

12

(şimdi silinmiş, bu görünür).

Windows paketi için hata ayıklama araçları WinDbg ve arkadaşları içerir. WindDbg, Visual Studio gibi tam bir hata ayıklayıcıdır, ancak daha yalın ve daha akıcı ve birçok yönden daha yeteneklidir. WinDbg'yi çalıştırın, işleminize ekleyin (F6) ve komut penceresinde !handle yazın. Tüm tutamaçların ve bazı istatistiklerin bir listesini alacaksınız. Yukarı kaydırırsanız ve sızdıranlardan biri gibi görünen bir tanıtıcı görürseniz, daha fazla bilgi görüntülemek için !handle <handlenum> f yapabilirsiniz. Örneğin, takılarak sistemimde iexplore için:

0:019> !handle 1bc f 
Handle 1bc 
    Type   Key 
    Attributes 0 
    GrantedAccess 0x2001f: 
     ReadControl 
     QueryValue,SetValue,CreateSubKey,EnumSubKey,Notify 
    HandleCount 2 
    PointerCount 3 
    Name   \REGISTRY\USER\S-1-5-21-498032705-2416727736-2837886327-1001\Software\Microsoft\Windows\CurrentVersion\Internet Settings 
    Object Specific Information 
    Key last write time: 11:04:51. 9/4/2011 
    Key name Internet Settings 

DÜZENLEME

, sen htrace windbg komutunu kullanabilirsiniz daha fazla bilgi edinmek için!. Bunu kullanmak için, windbg kullanarak işleminize ekleyin ve !htrace -enable yazın, sonra işlemi sürdürmek için g yazın. İşlemi biraz uygulayın ve ardından CTRL-Break'u (ör. CTRL-Pause) kullanarak kırın. !htrace -diff yazın. Açık kolları ve açıldıkları sırada çağrı yığınını gösteren yığın izlerinin bir listesini görmelisiniz. Windows simgeleriniz yoksa, mantıklı olacak adresler kendi kodunuz olacaktır - ancak ihtiyacınız olan ipuçlarını almak için bol miktarda olmalıdır.

<snip> 
ModLoad: 00000000`75020000 00000000`7504d000 WINTRUST.dll 
ModLoad: 00000000`75160000 00000000`7527d000 CRYPT32.dll 
ModLoad: 00000000`757d0000 00000000`757dc000 MSASN1.dll 
(2fd0.1ce4): Break instruction exception - code 80000003 (first chance) 
ntdll!DbgBreakPoint: 
00000000`77440530 cc    int  3 
0:019> !htrace -enable 
Handle tracing enabled. 
Handle tracing information snapshot successfully taken. 
0:019> g 
(2fd0.2c88): Break instruction exception - code 80000003 (first chance) 
ntdll!DbgBreakPoint: 
00000000`77440530 cc    int  3 
0:019> !htrace -diff 
Handle tracing information snapshot successfully taken. 
0x360 new stack traces since the previous snapshot. 
Ignoring handles that were already closed... 
Outstanding handles opened since the previous snapshot: 
-------------------------------------- 
Handle = 0x000000000000070c - OPEN 
Thread ID = 0x0000000000000c44, Process ID = 0x0000000000002fd0 

0x000000007744232a: ntdll!NtOpenThread+0x000000000000000a 
0x0000000074c83910: wow64!whNtOpenThread+0x00000000000000a0 
0x0000000074c6cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7 
0x0000000074bf2776: wow64cpu!TurboDispatchJumpAddressEnd+0x000000000000002d 
0x0000000074c6d07e: wow64!RunCpuSimulation+0x000000000000000a 
0x0000000074c6c549: wow64!Wow64LdrpInitialize+0x0000000000000429 
0x000000007746e707: ntdll! ?? ::FNODOBFM::`string'+0x0000000000029364 
0x000000007741c32e: ntdll!LdrInitializeThunk+0x000000000000000e 
0x00000000775f113a: ntdll_775d0000!ZwOpenThread+0x0000000000000012 
0x0000000075ea2e32: KERNELBASE!OpenThread+0x0000000000000049 
0x00000000755578df: iertutil!CIsoMalloc::AllocArtifact+0x0000000000000050 
0x00000000755578b4: iertutil!CIntraprocessMessageQueueSite::_QueryMessageThreadAffinityHelper_UntrustedSerializedIsoMessage+0x0000000000000055 
0x0000000075557754: iertutil!CIntraprocessMessageQueueSite::QueryMessageThreadAffinity+0x000000000000004b 
-------------------------------------- 
Handle = 0x0000000000000790 - OPEN 
Thread ID = 0x00000000000019d4, Process ID = 0x0000000000002fd0 

0x000000007744226a: ntdll!NtOpenKeyEx+0x000000000000000a 
0x0000000074c8d205: wow64!Wow64NtOpenKey+0x0000000000000091 
0x0000000074c8314f: wow64!whNtOpenKeyEx+0x0000000000000073 
0x0000000074c6cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7 
0x0000000074bf2776: wow64cpu!TurboDispatchJumpAddressEnd+0x000000000000002d 
0x0000000074c6d07e: wow64!RunCpuSimulation+0x000000000000000a 
0x0000000074c6c549: wow64!Wow64LdrpInitialize+0x0000000000000429 
0x000000007746e707: ntdll! ?? ::FNODOBFM::`string'+0x0000000000029364 
0x000000007741c32e: ntdll!LdrInitializeThunk+0x000000000000000e 
0x00000000775f101a: ntdll_775d0000!ZwOpenKeyEx+0x0000000000000012 
0x0000000075ad2271: KERNEL32!LocalBaseRegOpenKey+0x000000000000010c 
0x0000000075ad2416: KERNEL32!RegOpenKeyExInternalW+0x0000000000000130 
0x0000000075ad2302: KERNEL32!RegOpenKeyExW+0x0000000000000021 
-------------------------------------- 
Handle = 0x0000000000000788 - OPEN 
Thread ID = 0x00000000000019d4, Process ID = 0x0000000000002fd0 

0x000000007744226a: ntdll!NtOpenKeyEx+0x000000000000000a 
0x0000000074c8d205: wow64!Wow64NtOpenKey+0x0000000000000091 
0x0000000074c8314f: wow64!whNtOpenKeyEx+0x0000000000000073 
0x0000000074c6cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7 
0x0000000074bf2776: wow64cpu!TurboDispatchJumpAddressEnd+0x000000000000002d 
0x0000000074c6d07e: wow64!RunCpuSimulation+0x000000000000000a 
0x0000000074c6c549: wow64!Wow64LdrpInitialize+0x0000000000000429 
0x000000007746e707: ntdll! ?? ::FNODOBFM::`string'+0x0000000000029364 
0x000000007741c32e: ntdll!LdrInitializeThunk+0x000000000000000e 
0x00000000775f101a: ntdll_775d0000!ZwOpenKeyEx+0x0000000000000012 
0x0000000075ad2271: KERNEL32!LocalBaseRegOpenKey+0x000000000000010c 
0x0000000075ad2416: KERNEL32!RegOpenKeyExInternalW+0x0000000000000130 
0x0000000075ad2302: KERNEL32!RegOpenKeyExW+0x0000000000000021 
<snip> 
+0

Aptal soru ... Windows paketi için Debugging araçları olduğunu düşündüğüm şeyi buldum, ancak kurulumdan sonra WinDbg'den bahsedilmiyor - nereden almak için resmi olarak nereden yüklerim? – bugfixr

+0

Anladım, Hata Ayıklama araçlarını kurmadan önce 64 bit sürümünü yüklemek zorunda kaldı. – bugfixr

İlgili konular