Umdhtools.exe: Umdh.exe bellek bulmak için nasıl kullanılacağını sızdırıyor

Makale çevirileri Makale çevirileri
Makale numarası: 268343 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Kullanıcı modu dökümü yığını (umdh) hizmet programı ile çalışır işletim sistemi Windows yığın ayırma işlemleri belirli bir işlem için analiz etmek. Bu yardımcı program ile ilişkili diğer araçlar öncelikle hedeflenen Windows 2000 ve Windows xp için. ' I tıklatın Çal Bu akan ortam gösterisini görüntülemek için düğmeyi seçin.

Not Video ® acelp codec ile kodlanmış, şurada ücretsiz ® acelp codec yüklemeniz gerekir http://www.ACELP.NET/acelp_eval.php



Not Çünkü malloc c çalışma zamanı (crt) modülünde işlevini kullanan kare işaretçisi atlandığını (fpo) Windows Server 2003'ün özgün yayın sürümü, tam bir yığın bilgileri görebilirsiniz malloc umdh aracını kullanarak işlevi. Bu sorun Windows Server 2003 Service Pack 1 (SP1) crt modülünde giderilmiştir. Bu nedenle, Windows Server 2003 SP1 malloc işlevinin tam yığın bilgileri görebilirsiniz.

Daha fazla bilgi

Önce umdh kullanın.

Bellek sızıntısı yaşandığı düşünüyorsanız dikkat edin Bu bellek sızıntıları gibi göründükleri olmayabilir. Olduğunu fark bir bellek sızıntısı, gerçek bellek sızıntısı değildir, ancak performans geliştirmesidir. İçin Örneğin, Microsoft Jet veritabanı altyapısı büyük miktarlarda bellek tüketebilir (128 mb 256 MB'lık bir bilgisayarda) veri alır ve yazar önbelleğe alır. Önbellek Jet motoru Hızlı İleri okuma ve yazma ön almak için izin verir. Arabelleğe kaydetme açık.

Yaşayan bir işlem olup olmadığını belirlemek için bellek sızıntıları, Windows Performans İzleyicisi (Perfmon.exe) kullanın ve özel izleme Uygulamanız için işlem kategorisi altında bayt sayısı. Özel bayt işlemin ayırdığı, ancak diğer ile paylaşmıyor toplam bellek işler. Bu aynı zamanda sanal bayt, farklı olduğunu unutmayın izlemek için ilginç. Sanal Bayt bayt olarak geçerli boyutu ise işlemin kullandığı sanal adres alanı. Bir uygulamanın sanal sızdırıyor bellek, tahsis edilen özel bayt olarak bir fark yok ama. Ne zaman bellek artırmak görürseniz, ancak özel bayt sayısını izlemeniz monitör görmek için sanal bayt bellek yetersiz çalışmakta olan şüpheli sanal belleği kullanıyorsanız. Bellek sızıntıları ve Windows Performans İzleyicisi (Perfmon.exe) bakış algılama hakkında ek bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://msdn.microsoft.com/en-us/library/ms404355.aspx
Uygulamanızın bellek sızıntı olduğunu emin olmak için yerleştirme fazla yineleme ile döngü kodu şüphe ve özel izleme ve sanal bayt bellek herhangi bir artış için. Emin olmak izleme numarası özel bayt ve sanal bayt sonuçta aynı kalır değil ve Numara artırma durdurur. Hangi bellek durdurur bir nokta ise artırılması, (örneğin, onu sonsuza kadar climb devam değil) yapmak, ancak daha yüksek bir bellek sızıntısı Bkz:, için büyüyen bir önbellek görmek, en büyük boyutu.

Önce bir bellek sızıntısı Bkz: karar umdh kullanmak için şu adımları izleyin:
  1. umdh yardımcı programını yükleyin.
  2. Sistem path ortam değişkeni eklemek için ayarlama umdh yüklü olduğu klasör.
  3. _nt_symbol_path ortam değişkeni ayarlamak umdh hata ayıklama simge bulabilmesi için Microsoft simge sunucusu yolu dosyaları.
umdh yardımcı programı için hata ayıklama araçları bulunur Windows aşağıdaki Microsoft Web sitesindeki ürünler:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx
Karşıdan yükleme ve yardımcı programını yükleyin ve daha sonra yol sistemi Burada hata ayıklama araçları yüklenmiş olan yol ortam değişkeni.

umdh kullanabilmek için doğru hata ayıklama simgelerini yüklemeniz gerekir Uygulama ve işletim sistemi bileşenleri. Microsoft kullanın Hata ayıklama simgeleri Microsoft bileşenleri almak için simge sunucusu. Daha fazla bilgi için Microsoft simge sunucusu hakkında Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
311503Hata ayıklama simge dosyalarını edinmek için Microsoft simge Sunucusu'nu kullanma
umdh çalışır simge dosyalarını kullanarak bulmak _nt_symbol_path ortam değişkeni. Yolu ayarlamak için komut bir komut istemi aşağıdaki gibi görünebilir:
set _nt_symbol_path = srv * c:\LocalSymbolCache
Sembolik ayarlama hakkında ek bilgi için hata ayıklama bilgi, bu makalenin ilerisindeki "Hata ayıklama simgeleri" bölümüne bakın.

Bu adımları tamamladıktan sonra umdh yardımcı programını kullanın.

umdh ile yığın yakalama döker

umdh öbek hakkında bilgi dökümünü alır bir hizmet programıdır. ayırma işlemi. Çağrı yığını her biri için bu bilgiler içerir ayırma, bu çağrı yığını yapılan ayırma sayısı ve Bu çağrı yığını tüketilir bayt sayısı. Örneğin:
00005320 bytes in 0x14 allocations (@ 0x00000428) by: BackTrace00053
           ntdll!RtlDebugAllocateHeap+0x000000FD
           ntdll!RtlAllocateHeapSlowly+0x0000005A
           ntdll!RtlAllocateHeap+0x00000808
           MyApp!_heap_alloc_base+0x00000069
           MyApp!_heap_alloc_dbg+0x000001A2
           MyApp!_nh_malloc_dbg+0x00000023
           MyApp!_nh_malloc+0x00000016
           MyApp!operator new+0x0000000E
           MyApp!LeakyFunc+0x0000001E
           MyApp!main+0x0000002C
           MyApp!mainCRTStartup+0x000000FC
           KERNEL32!BaseProcessStart+0x0000003D
				
21280 (0X5320) olan bu umdh çıkış gösterir ayrılan bayt sayısı Çağrı yığını toplam. 21280 Bayt sayısı 20 ' ayrılan (0x14) 1064 bayt (0x428) tahsisatlarını ayırın. Çağrı yığını verilen bir BackTrace00053 tanıtıcısı.

Yığın döküm dosyasını oluşturmak için ayırma, ile de dahil Gflags.exe yardımcı programını kullanmalısınız. biliyorsunuz, işletim sistemi için Windows için hata ayıklama araçları ürünleri Çekirdek ayırmalarını izlemek istediğiniz.

İstediğinizi varsayalım. heap(s) içeriği için Notepad.exe dökümünü almak için. İlk yığın izlemeyi etkinleştir test etmek istediğiniz uygulama için alım. Varsayılan olarak, bu özellik etkin değil. Bu özelliği etkinleştirmek için komut aşağıdaki gibidir:
GFlags aracına -i notepad.exe + hakkınızın
Komutu olan işlem için yığın izlemeyi etkinleştir zaten çalışır, ancak gelecekteki tüm çalıştırma için yığın izlemeyi etkinleştirir Notepad.exe. alternatif olarak, bayrak gflags ARACINA kullanıcı aracılığıyla ayarlayabilirsiniz arabirimi (Gflags.exe kullanıcı arabirimi elde etmek için herhangi bir bağımsız değişkeni çalıştırın). Kullan , -hakkınızın seçenek GFlags aracına, yığın izlemeyi devre dışı bırakmak için hata ayıklama işlemi bitti.

Gflags.exe üzerinden görüntü bayrak ayarlandığında, ve hata ayıklama simgelerini ayarlamak, (Not Defteri başlatmak hazırsınız umdh kullanan uygulama). Program başlatıldıktan sonra yapmanız gerekir. hemen başladı Not Defteri işlemin işlem Kimliğini (PID) belirlemek. Bu komut aşağıdaki gibidir:
tlist
PID TLIST uygulama çıkışından bulabilirsiniz. PID bilgileri Görev Yöneticisi'nden de edinilebilir. PID varsayalım başlattığınız Not Defteri 124 işlemidir. umdh elde etmek için kullanabileceğiniz bir Yığın dökümü aşağıdaki komutla:
umdh - p: 124 - f:notepad124.log
Sonuçları: Bir tam Yığın dökümü Not Defteri işleminde kullandığınız Notepad124.log dosyası. Bu dosyanın tüm yapılan ayırmaları gösterir ve ayırma yapıldığı callstacks.

Karşılaştırma umdh günlükleri için Umdh.exe kullanın

Sırada umdh günlük dosyası hakkında değerli bilgiler içerir. kümeler ile bulma endişeniz varsa bir işlem için geçerli durumunu bir bellek sızıntısı olması çıkışlarına iki günlüğü karşılaştırma daha değerli ve ne çağrı yığını bulun iki döküm dosyası arasındaki en büyük büyüme görmedi. Umdh.exe yardımcı programı bir çözümleme sağlamak için iki umdh günlüğü karşılaştırma yardımcı olur. aralarındaki fark. En farklı yakalanan iki günlüğü sahip bir kez aralıkları, ardından şu komutu kullanabilirsiniz:
umdh dh1.log dh2.log > cmp12.txt
- veya -
umdh -d dh1.log dh2.log > cmp12.txt
, -d komut satırı seçeneği yerine ondalık görüntülemek için umdh söyler. Onaltılık. Komut çıktısını farklarının karşılaştırır iki ayrı saat arasındaki ayırma günlüğe kaydeder ve benzer bilgiler sağlar Aşağıdaki:
+ 5320 (f110 - 9df0) 3a ayırma BackTrace00053 Toplam artış 5320 ==
umdh günlük dosyalarında her BackTrace için bir karşılaştırma vardır iki günlük dosyaları arasında yapılmış. Bu durumda, son günlük dosyasını gösterir umdh içinde belirtilen komut satırı ilk sırasında ayrılan 0xF110 bayt vardı Günlük umdh komut satırında aynı BackTrace için ayrılan 0x9DF0 bayt vardı. (çağrı yığını). Ayrılan bayt sayısı arasındaki fark "5320" dir. ' Bu durumda, daha fazla bayt arasındaki saatleri tahsis 0x5320 vardı, iki günlük üzerindeydi. Bayt olarak tanımlanan çağrı yığını geldiğini "backtrace00053".

Ne, içinde olduğunu anlamak için sonraki adım olacaktır. backtrace. Arama ve ikinci günlük dosyası açarsanız BackTrace00053, şu şekilde diğer benzeri bulabilirsiniz:
00005320 bytes in 0x14 allocations (@ 0x00000428) by: BackTrace00053
           ntdll!RtlDebugAllocateHeap+0x000000FD
           ntdll!RtlAllocateHeapSlowly+0x0000005A
           ntdll!RtlAllocateHeap+0x00000808
           MyApp!_heap_alloc_base+0x00000069
           MyApp!_heap_alloc_dbg+0x000001A2
           MyApp!_nh_malloc_dbg+0x00000023
           MyApp!_nh_malloc+0x00000016
           MyApp!operator new+0x0000000E
           MyApp!LeakyFunc+0x0000001E
           MyApp!main+0x0000002C
           MyApp!mainCRTStartup+0x000000FC
           KERNEL32!BaseProcessStart+0x0000003D
				
Çağrı yığını görüntülediğinizde, görebilirsiniz LeakyFunc işlevi Visual c++ Çalışma Zamanı Kitaplığı üzerinden bellek ayırır. Yeni işlevi işleç. Ayırma sayısı gibi büyüyor bulursanız daha fazla döküm dosyaları, belleğin sonuçlandırmak serbest bırakılmaz.

Yığın izlemelerini etkinleştirme

Yığın izlemelerini umdh günlüklerindeki en önemli bilgi. Yığın ayırma işlemleri. İşlem yığın sızdırıyor, doğrulamak için bunları analiz edebilirsiniz bellek. Varsayılan olarak, bu yığın izlemelerini alınmasıyla elde edilen. Bu etkinleştirme işlem başına veya sistem genelinde özelliği. Yığın etkinleştirmek için aşağıdaki komutu kullanın. sistem genelinde izleme:
GFlags aracına - r + hakkınızın
Bu komuttan sonra bilgisayarı yeniden. İşlem başına için etkinleştirme, komut şöyledir:
GFlags aracına -i UYGADI + hakkınızın
Burada UYGADI yürütülebilir dosya adı uzantısı (dahil olmak üzere Örneğin, Services.exe, Lsass.exe). Komut yığın izlemesini etkinleştirmek bir işlem için zaten çalışıyor. Bu nedenle, yapamazsınız işlemleri yeniden başlatın (örneğin, Hizmetleri, lsass, winlogon için), sınamanız yeniden başlatmanız gerekir bilgisayar.

Ayarları ne olduğunu doğrulamak için aşağıdaki komutları kullanın. sistem çapındaki veya belirli bir işlem için ayarlanmış olabilir: sistem genelinde:
GFlags aracına - r
Özel işlem:
GFlags aracına -i uygulama adı
Varsayılan olarak, en büyük yığın izleme derinliği 16'dır. İsterseniz derin callstacks görmek, gflags ARACINA çalıştırarak artırabilirsiniz. Seçmek için tıklatın Sistem kayıt defterive ardından yeni bir derinlik içinde yazın Maks. Yığın izleme yakalama derinliği düzenleme denetimi. ' I tıklatın Uygulave sonra bilgisayarı yeniden başlatın.
ÖNEMLİ: Windows NT 4.0 Service Pack 6 kullanıyorsanız kullanmanız gerekir Umdh.exe ve yerine Umdh_nt4.exe kullanmanız gerekir GFlags aracına -r sistem genelinde yığın izleme ayarlamak için komut. Emin olun, Bilgisayarınızı yeniden başlatın. Umdh_nt4 yığın izleme çalışmaz bir işlem başına Windows NT sürüm 4 için ayrı ayrı. Sistemin tamamı için ayarlanması gerekir.

Hata ayıklama simgeleri

umdh kullanmanın en önemli adımlardan birini sağlamaktır iyi yığın izleme almak için iyi bir simge dosyalarını (.dbg veya .pdb dosyası) olduğunu. En azından, Kernel32.dbg ve Ntdll.dbg simge dosyaları gerekir. Yapabilecekleriniz daha fazla bilgi olarak gereksinim duyduğunuz ek hata ayıklama simgelerini alma ilgili bileşenleri bellek sızıntısına neden oluyor. Daha fazla bilgi için Microsoft hata ayıklama simge dosyalarını almak hakkında bileşenler, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
311503Hata ayıklama simge dosyalarını edinmek için Microsoft simge Sunucusu'nu kullanma
Nasıl kullanılacağı hakkında ek bilgi için Microsoft simge sunucusu ve Windows simge paketleri edinme ziyaret edin aşağıdaki Microsoft Web sitesi:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx
Visual c++ ile bileşenleri oluştururken önemlidir, Program veritabanı düzenleme için elinizde değil ve devam c++ için seçili derleyici seçenekleri. Bunun yerine, Program veritabanını seçin. Simge yolunu ayarlamak için kullanılmak üzere yola _nt_symbol_path ortam değişkeni başlatılamadı. , semboller için Microsoft almak için Microsoft simge sunucusunu kullanabilirsiniz bileşenleri.
311503 Hata ayıklama simge dosyalarını edinmek için Microsoft simge Sunucusu'nu kullanma
_nt_symbol_path ayarlamak için aşağıdaki adımları izleyin ortam değişkeni:
  1. Denetim Masası'nda çift tıklatın Sistem.
  2. ' I tıklatın Gelişmiş sekmesini tıklatın ve sonra Ortam değişkenleri.
_nt_symbol_path ortam değişkeni ayarlayabilirsiniz veya bir umdh çalıştırmadan önce komut penceresini açın.

NOT: Pdb bileşenleri için yolu de sizin uygulama. Örneğin, _nt_symbol_path yolunu aşağıdaki gibi ayarlayın:
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\myapplicationssymbols
Bu yolun ilk bölümü Microsoft simge sunucusunu gösteren ve durumları c:\symbols kullanılan simgeler yüklenir klasör. Noktalı virgül takip eden pdb dosyalarının yolunu parçasıdır (simge dosyaları) leaking uygulama için özel olarak.

umdh ba?latmak

Yalnızca gerekli komut satırı parametresi umdh -p PID, işlemin belirleyen seçeneği bir yığın Döküm elde edilir. Görev Yöneticisi'ni kullanarak PID'yi elde edilebilir veya Tlist.exe program. Aşağıdakine benzer bir komut için günlük olacaktır standart çıktıya döküldü:
umdh - p: PID
umdh standart olarak da çeşitli bilgilendirme iletileri görüntüler hata, ve yeniden yönlendirmeyin, bu nedenle onu gerçek günlük ile karıştırılır. Bir dosyada umdh bilgilendirici iletileri toplamak için aşağıdaki komutu kullanın:
umdh - p: PID 2>umdh.msg
Bir dosyada umdh döküldü günlük toplamak istiyorsanız, Aşağıdaki komutlardan birini kullanın:
umdh - p: PID > umdh.log
- veya -
umdh - p: PID-f:umdh.log
Bu komutlar eşdeğerdir.

Olduğu varsayılan günlük elde umdh göre sıralanmış öbek Tüketiciler, bir numaralandırma içerir ayırma sayısı. Hata ayıklama amacıyla, ayrıca tüm bir döküm dosyası gerekir ile ilgili kendi yığın izlemelerini tahsis edilen blok -d seçenek kullanılabilir:
umdh - p: PID -d
Bu komutu kullanırsanız aşağıdaki umdh görebilirsiniz. Günlük dosyası:
Tahsisatları izleme BackTrace00046 için: 005F69A0 005F6150
Bunlar, ayırmalarının bellek adresleri Çağrı yığını. Ayıklayıcınızı işleme bağlıysa, döküm Bu adreslerde ne tahsis Bkz: bellek içeriğini.

Günlük çok fazla bilgi içeriyorsa, yalnızca sınırlı olabilir ayırma büyük kullanıcılar belirli bir eşiğin say. Kullan Aşağıdaki komut:
umdh - p: PID - t: EŞİK
Tüm komut satırı seçeneklerini (örneğin, -t, -d -f -p,) aynı anda herhangi bir sırada belirtilebilir. Aşağıda bir komut satırı örneği daha zor:
umdh - p: 123 - t: 1000 - f:umdh.log -d
Bu komut yığınlar PID 123 ile işlem için döker. Umdh.log dosyası. Bunu yalnızca yığın izlemelerini bu hesabı için birden fazla 1000 döker tahsisleri ve de olan öbek bloklarının adresleri döker Her yığın izleme ile tahsis edilir.

Bir başka yararlı umdh seçenek , -l seçenek. Bu, yazdırılacak dosya ve satır numaraları neden olur Çağrı yığını mümkün.

umdh çıkış anlatıldı

Günlük yeniden yönlendirilen, bir dosya () içinumdh - p: PID-f:umdh.log), içeriği alındı aşağıdakine benzer çalışan bir not defteri işleminden:
UMDH: Logtime 2000-06-28 10:54 - Machine=MYMachine - PID=704
   *********** Heap 00270000 Information ********************
       Flags: 58000062
       Number Of Entries: 87
       Number Of Tags: <unknown>
       Bytes Allocated: 00008DF0
       Bytes Committed: 0000A000
       Total FreeSpace: 00001210
       Number of Virtual Address chunks used: 1
       Address Space Used: <unknown>
       Entry Overhead: 8
       Creator:  (Backtrace00007)
           ntdll!RtlDebugCreateHeap+0x00000196
           ntdll!RtlCreateHeap+0x0000023F
           ntdll!LdrpInitializeProcess+0x00000369
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007
   *********** Heap 00270000 Hogs ********************
   000001A0 bytes in 0x4 allocations (@ 0x00000068) by: BackTrace00031
           ntdll!RtlDebugAllocateHeap+0x000000FB
           ntdll!RtlAllocateHeapSlowly+0x0000005B
           ntdll!RtlAllocateHeap+0x00000D81
           ntdll!LdrpAllocateDataTableEntry+0x00000039
           ntdll!LdrpMapDll+0x000002A4
           ntdll!LdrpLoadImportModule+0x0000010D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpInitializeProcess+0x000009DC
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007

   000001A0 bytes in 0x4 allocations (@ 0x00000068) by: BackTrace00034
           ntdll!RtlDebugAllocateHeap+0x000000FB
           ntdll!RtlAllocateHeapSlowly+0x0000005B
           ntdll!RtlAllocateHeap+0x00000D81
           ntdll!LdrpAllocateDataTableEntry+0x00000039
           ntdll!LdrpMapDll+0x000002A4
           ntdll!LdrpLoadImportModule+0x0000010D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpLoadImportModule+0x0000011D
           ntdll!LdrpWalkImportDescriptor+0x0000008B
           ntdll!LdrpInitializeProcess+0x000009DC
           ntdll!LdrpInitialize+0x0000028D
           ntdll!KiUserApcDispatcher+0x00000007
				
Günlük işlemi her yığın, bir dökümünü içerir. Bu örnekte, bir yığın 270000 adresinde günlük başlar. Sonra birkaç genel sayaçlar için Yığın yığın izlemelerini azalan sıralı düzende bir döküm günlüğü içerir Çoğu ayırmalarının sorumlu olan. Ne zaman, dinamikleri karşılaştırmak farklı bir süre sırasında kullanılan bellek ne oluştu ortaya ç?karmak işlem ve Öbek kullanmak için bir sızıntı benzer.

umdh kullandığınızda, karşılaşabileceğiniz sorunlar

umdh kullandığınızda, en sık karşılaşılan hatalar nedeniyle ortaya yığını izleme etkinleştirilir. Ayrıca, umdh dan Ntdll.dll dosyası için yanlış simgeler önlemek çalışıyor. Diğer simge dosyaları, umdh çalışır, ancak günlük dosyasının içerdiği yığını işlev adları vardır, ancak bunun yerine göreli adreslerine sahip izlemeler Modüller içinde. Uzaktaki bir üçüncü hata yanlış PID belirten. Aşağıdaki umdh sahip olmadığı için bir işlemi çalıştırmayı denediğinizde hata iletisi sonuçları yığın izleme: etkin
C:\>umdh - p: 1140 umdh: Logtime 2000-06-28 12: 43 - Makine Makinem - PID = = 1140 bağlanma.....Modülü Numaralandırma tamamlandı. SymGetSymFromName (işlem, ntdll!RtlpStackTraceDataBase, xxx) başarısız, son hata = 126 UmdhGetAddrFromName yığın izleme db bulamadı Fare işaretçisini (ntdll!RtlpStackTraceDataBase). Ntdll.dll simgeler yanlıştır; Biz Al simgelerini görebilmeniz gerekir.
İçin aşağıdaki komutu kullanın incelediğiniz işlem ayarlarını denetleyin:
GFlags aracına -i appname
Sistem genelinde yığında dayanan aşağıdaki komutu kullanın izleme:
GFlags aracına - r
Bu komutlar, bir uygulama için ayarlanan bayrakları listesini göster. Sistem genelinde yığın izlemeyi unutmayın, özellik olarak görünebilir bilgisayarı çalıştırdıktan sonra yeniden değil, ancak etkin GFlags aracına - r + hakkınızın komutu gerçekten etkinleştirilir. Bilmek istiyorsanız her yığın izleme etkin olan uygulama USTEnabled anahtarı görüntüleyebilirsiniz. Aşağıdaki kayıt defteri anahtarının altında:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image dosya Yürütme seçenekleri
umdh etkin, yığın izleme işlemi çalıştırırsanız, ancak bayrakların ayarlanacağı bu yana, uygulamayı yeniden, alabilirsiniz Aşağıdaki iletiyi sizin günlüğüne kaydeder:
Bir yığın izi Bu ayırma için kaydedilmemiş (dizin == 0)
Çalıştırırsanız, ayarlama doğru simge yolu veya simgeler yanlıştır ve umdh çalıştırmak olabilir günlüğe bir hata iletisi alırsınız. Ancak, yalnızca yanlış alabilirsiniz veya yanıltıcı callstacks. Doğru simgeler yüklü olduğunu doğrulamak için Başlat Örneğin, bir işlem için ntsd sistem hata ayıklayıcı:
ntsd Not Defteri
Daha sonra hata ayıklayıcı, çalıştırın LD Modül için simge bilgilerini yüklemek için komutu ve LM hangi modüllerin kendi yüklenen sembolünüz listelemek için komutu. Yoksa biri çıktı LM komut yüklenen verme simgeler gösterir, bu simgeler iyi olur. Eğer yüklenen pdb simgelere sahipseniz, simgeler iyi olur. Alabilirsiniz yanlış PID belirttiğiniz aşağıdaki hata iletisi:
C:\>umdh - p: 1000 umdh: Logtime 2000-06-28 09: 45 - makine Makinem-= PID = 1000 bağlanılıyor... OpenProcess başarısız oldu, son hata = 0x57

Visual Basic umdh çağrısı

Bazen günlük sayısı zamanla dökümünü almak yararlı olabilir çünkü sızıntı çok dikkat çekici olabilir ilk. Örneğin, varsa, Active Server Pages (asp) Web uygulamanızın bellek sızıntı olduğunu düşünüyorsanız, bir com bileşeni için shells Visual Basic yazmak yardımcı olabilir UMDH. Sonra o bileşene asp sayfanız çağırabilirsiniz.

, umdh çağırır ve bir günlük dosyası oluşturur bazı Visual Basic kodunu aşağıdaki gibidir Geçerli saatten dayanır:
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
      Public Function GetProcessID()
      GetProcessID = GetCurrentProcessId()
      End Function  
   .
   .
   .
      Dim strTime As String

      Dim sProcID As String
      sProcID = GetProcessID()
      strTime = "MYLOG_" & Format(Now(), "hhmm")
     
      Shell ("C:\UMDH\umdh -p:" & sProcID & " -f:d:\logs\" & strTime & ".txt")
				

umdh kullanmak Windows NT 4.0 Service Pack 6a (SP6a)

Hata ayıklama araçları ile birlikte umdh yardımcı programı Windows ürünleri, Windows NT 4.0 üzerinde çalışmıyor. Kendi kendine ayıklanan bir yürütülebilir dosya (Umdhnt4tools.exe) Bu makalede yer ve aşağıdakileri içerir nt 4.0 ile kullanılacak araçlar:
  • Umdh_nt4.exe ve dbghelp.DLL'den yararlanacak şekilde güncelleştirmiş
    Bu, Windows NT 4.0 umdh yardımcı programı sürümü SP6.
  • Dhcmp.exe
    Bu yardımcı program, iki umdh karşılaştırmak için kullanılır olası bir bellek yeri belirlemek için dökümleri occurrs sızdırıyor.
, Aşağıdaki dosya Microsoft Yükleme Merkezi'nden edinilebilir Merkezi:
Bu resmi kapatBu resmi aç
Karşıdan yükleme
Umdhnt4tools.exe şimdi karşıdan yükle
Yayın Tarihi: 28 Ağustos 2002

Microsoft Destek dosyalarını karşıdan yükleme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
119591 Microsoft destek dosyaları Çevrimiçi Hizmetler'den nasıl alınır
Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın postalandığı tarihte kullanılabilir olan en güncel virüs algılama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişikliğin yapılmasını engellemeye yardım eden güvenliği gelişmiş sunucularda depolanır. Umdh_nt4.exe ve dbghelp.DLL'den yararlanacak şekilde güncelleştirmiş bir klasöre yerleştirin ve ardından Öncelikle, path ortam değişkeninde soldadır. Yerine Umdh_nt4.exe kullanın UMDH.

Windows NT 4.0 çalıştıran bir bilgisayarda kullanmanız gerekir Gflags.exe sistem genelinde yığın izleme ayarlamak için. Örneğin:
GFlags aracına - r
Bilgisayarınızı yeniden başlatmanız emin olun. Umdh_nt4 yığın izleme Windows NT sürüm 4.0 işlem başına bazında çalışmaz. İçin ayarla tüm sistem.

Yok UMDH_NT4 umdh olmamasıdır Günlük dosyaları karşılaştırın. Örneğin, aşağıdakileri yapamazsınız:
UMDH_NT4 dh1.log dh2.log > cmp12.txt
Bunun yerine birlikte bulunan Dhcmp.exe yardımcı programını kullanın Bu makalede. Komut aşağıdakine benzer:
dhcmp dh1.log dh2.log > cmp12.txt

Özellikler

Makale numarası: 268343 - Last Review: 18 Mayıs 2011 Çarşamba - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 4.0 Developer Edition
Anahtar Kelimeler: 
kbdownload kbarttypeshowme kbfile kbgraphxlinkcritical kbhowto kbsample kbmt KB268343 KbMttr
Machine-translated Article
Ö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.
Makalenin İngilizcesi aşağıdaki gibidir:268343

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com