(ş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>
Visual Studio Kod Analizi ya da FxCop) kaynakların düzgün bir şekilde atılamaması durumunda size söyleyecektir. –
John, merak ediyorum, cevabınızı neden bir yorum olarak cevaplandırmadınız, bir cevap değil? –
Bunun bir cevap olduğunu düşünmemiştim. Başka birisinin bu fikirle daha iyi bir iş yapmasını umuyordum. –