Makale numarası: 268343 - Son Gözden Geçirme: 18 Mayıs 2011 Çarşamba - Gözden geçirme: 1.0 Umdhtools.exe: Umdh.exe bellek bulmak için nasıl kullanılacağını sızdırıyor
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 (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
(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:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx
(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: 311503
(http://support.microsoft.com/kb/311503/
)
Hata 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ökerumdh ö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: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ınSı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: Yığın izlemelerini etkinleştirmeYığı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 simgeleriumdh 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:311503
(http://support.microsoft.com/kb/311503/
)
Hata 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
(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
(http://support.microsoft.com/kb/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:
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?latmakYalnı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 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 kullandığınızda, karşılaşabileceğiniz sorunlarumdh 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. 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) 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: 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:
Bu resmi kapat ![]() 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
(http://support.microsoft.com/kb/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 Bu makaledeki bilginin uygulandığı durum:
Otomatik TercümeÖ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
(http://support.microsoft.com/kb/268343/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukMakale çevirileri
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Üste
