Select the product you need help with
Het gebruik van Pageheap.exe in Windows XP, Windows 2000 en Windows Server 2003Artikel ID: 286470 - Bekijk de producten waarop dit artikel van toepassing is. Op deze paginaSamenvattingIn dit artikel wordt beschreven hoe u met het hulp programma pagina Heap
(Pageheap.exe) in Microsoft Windows XP, Microsoft Windows 2000 en Microsoft Windows Server 2003. Meer informatiePageheap.exe instellen pagina heap vlaggen die helpen bij het zoeken
beschadiging van heap gerelateerd. Het kan ook detecteren lekkage in programma's die zijn
uitgevoerd op Windows 2000 Professional Service Pack 2 (SP2) en Windows XP
Professionele systemen. Pageheap.exe introduceert een validatie software laag (pagina opslagruimtebeheer) tussen de toepassing en het systeem dat wordt gecontroleerd alle bewerkingen op dynamisch geheugen (toewijzingen, vrij, en andere bewerkingen heap). Wanneer de pagina Heap-beheer is ingeschakeld, is de toepassing die wordt getest vervolgens onder een debugger gestart. Als er een probleem wordt aangetroffen, wordt een fout opsporingsprogramma einde. BelangrijkPageheap.exe geeft geen fout is, maar het zal lopen het systeem wanneer een probleem wordt aangetroffen. U kunt hiermee een verificatie die laag Er bestaat al in het systeembibliotheken Ntdll. dll in Windows 2000 Professional SP2 en Windows XP Professional. Pageheap.exe werkt niet op vorige versies van Microsoft Windows. Als de toepassing wordt getest niet in een fout opsporingsprogramma wordt gestart en een fout wordt aangetroffen, wordt slechts zonder vast lopen alle feedback. ConceptenEen veelvoorkomend probleem in de ontwikkeling van toepassingen is beschadiging van de heap. Dit gebeurt meestal wanneer een toepassing wordt toegewezen een blok heap-geheugen van een grootte en schrijft vervolgens toegekend aan geheugen adressen buiten de gevraagde omvang van de heap-blok. Beschadiging van de heap kan ook optreden wanneer u een toepassing schrijft blokkeren geheugen is al vrijgemaakt.Twee concepten zijn centrale informatie over de opdrachten met betrekking tot Pageheap.exe en de manier om het te gebruiken:
Download locatie voor het hulp programma PageheapDe meest recente fout opsporings hulp programma's pakket wilt downloaden, klikt u op de volgende koppeling:http://www.Microsoft.com/whdc/devtools/debugging/default.mspx
(http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
Selecteer de nieuwste versie van de hulp programma's voor fout opsporing. Wanneer u de hulp programma's installeert, selecteert u deAangepasteinstallatie en installeer een map met een toepasselijke naam. Bijvoorbeeld naar C:\Debug-hulpprogramma's installeren of C:\Debugtools. Kiezen van een methode voor het onderzoeken van Heap blok beschadigingenDe meeste van de beschadigingen in heap blokken kan worden gevonden in een twee manieren:
Paginagrote HeapPaginagrote heap moet worden ingeschakeld voor afzonderlijke processen of onder beperkte parameters voor grote processen, vanwege het hoge geheugen vereisten. Deze kan niet worden ingeschakeld systeem, omdat het moeilijk te is Evalueer de vereiste wissel bestandsgrootte. Met behulp van een wisselbestand te klein met systeemomvattende paginagrote heap wordt het systeem opgestart.Het voordeel van paginagrote heap is een proces dat access schenden (AV) precies op het moment van de storing. Dit eenvoudige storing opsporen. In volg orde kunnen lokaliseren storingen eerst gebruik normale pagina heap om vast te stellen voor de Wanneer een proces is mislukt en klik vervolgens op gebruik paginagrote heap op afzonderlijke ber eik grootschalige processen voor die klasse toewijzingen beperkt (dat wil zeggen een bereik bepaalde grootte of een specifieke bibliotheek). Normale pagina HeapNormale pagina heap kan worden gebruikt voor het testen van grootschalige processen zonder de hoge geheugen verbruik dat paginagrote heap is vereist. Echter normale pagina heap detectie uitgesteld totdat blokken worden vrijgemaakt, waardoor fouten meer moeilijk op te lossen.In het algemeen gebruik van normale pagina heap voor de eerste grootschalige processen testen. Vervolgens, als er problemen worden aangetroffen, paginagrote heap voor een beperkte toewijzingen in deze klasse inschakelen processen. Normale pagina heap kan veilig ingeschakelde systeem voor alle processen. Dit is heel handig op proef banken die algemene systeem uitvoeren validatie plaats gericht onderdelen testen. Dit kan ook normale pagina heap ingeschakeld voor een enkel proces bekijken. GFlags gebruiken met de systeem pagina HeapHetGFlagshulp programma wordt gebruikt waarmee de pagina systeem-heap. Om een GFlags-opdracht te activeren, moet u de computer opnieuw opstarten nadat u de opdracht.Heap systeemomvattende standaard pagina inschakelen:
Met behulp van GFlags met een enkele pagina opslag ruimte voor processenU kunt de heap pagina één specifiek proces controle inschakelen. Doen Dit als volgt:
Niet uitgelijnde toewijzingenAltijd gewaarborgd door de heap managers voor Windows (alle versies) (op de heap-toewijzingen dat een beginadres die 8-byte uitgelijnd 64-bits platforms de uitlijning is 16 bytes). Het opslagruimtebeheer pagina maakt de dezelfde garantie. Dit is onmogelijk, maar als u wilt dat de einde-van-de-toewijzing precies aan het einde van een pagina. De precieze einde van pagina toewijzing nodig is, zodat een fout uit 1-byte lees activeert of in de niet-toegankelijke pagina schrijven en een onmiddellijke probleem veroorzaken.Als de gebruiker verzocht grootte voor het blok is 8-byte uitgelijnd, vervolgens pagina heap niet voldoen aan de "start adres 8-byte uitgelijnd" en de "eind adres pagina uitgelijnde"beperkingen. De oplossing is om te voldoen aan de eerste beperking en de begin van het blok 8-byte uitgelijnd. Gebruikt u een kleine patroon tussen de einde van het blok en het begin van de niet-toegankelijke pagina. Dit patroon kan vanuit 0 bytes tot en met 7 bytes lang op 32-bits architecturen. De opvulling patroon wordt gecontroleerd bij gratis. Desgewenst onmiddellijk fouten opsporing Zorg voor deze toewijzingen die anders een patroon aan het einde zal hebben, het opslagruimtebeheer pagina negeert de regel 8-byte-uitlijning en altijd uitlijnen de einde van de toewijzing aan de grens van een pagina met behulp van de/ niet uitgelijndeen/Fullparameters. Zie voor meer informatie de/ niet uitgelijndeparameter. OPMERKING: Sommige programma's maken veronderstellingen over 8-byte-uitlijning en ze Stop correct werken met de/ niet uitgelijndeparameter. Microsoft Internet Explorer is een dergelijk programma. Niet-doorgevoerde pagina's voor paginagrote heap-toewijzingenDe core paginagrote heap uitvoering doorgevoerd twee pagina's voor alle toewijzing kleiner is dan één pagina. Één pagina wordt gebruikt voor de toewijzing van gebruikers, en de andere is niet-toegankelijk aan het einde van de buffer gemaakt.Einde van de buffer overlopen kunnen worden gedetecteerd met behulp van een zone van gereserveerde virtuele ruimte, in plaats van een niet-toegankelijke pagina toegewezen. Een toegangs fout uitzondering doet zich voor wanneer het proces dat gereserveerde virtuele ruimte raakt. Dit benadering kunt geheugen verbruik verminderen door maximaal 50 procent. Voor meer informatie informatie, Zie de/ vrijmakingparameter. Fout injectieU kunt pagina opslagruimtebeheer regelen zodat bepaalde toewijzingen opzet is mislukt. Dit is handig bij het simuleren van weinig geheugen voorwaarden zonder daadwerkelijk gebruik van alle systeembronnen.Geef een getal op tussen 1 en 10000 vertegenwoordigen de waarschijnlijkheid dat een toewijzing mislukken. Met behulp van een waarschijnlijkheid van 10000 zorgt ervoor dat 100% van de toewijzingen mislukken. A waarschijnlijkheid van 2000 geeft aan dat ongeveer 20 procent van de toewijzingen mislukken. Het opslagruimtebeheer pagina neemt speciale zorg om te voorkomen dat fout injectie in zowel de eerste vijf seconden van de levens duur van het proces en de Windows NT Loader code paden (voor exampole LoadLibrary, FreeLibrary). Als vijf seconden niet volstaan om het proces volledig wilt opstarten, kunt u opgeven een langere time-out aan het begin van het proces. Zie voor meer informatie de/faultparameter. Wanneer u de/faultparameter en het geteste proces heeft een fout, een uitzondering zal worden verhoogd. In het algemeen de reden hiervoor is dat de toewijzings bewerking een NULL geretourneerd en de toepassing later probeert toegang te krijgen tot de toegewezen geheugen. Omdat het toewijzen, echter het geheugen niet toegankelijk, en daarom een toegangs fout optreedt. De andere reden dat een uitzondering is dat de toepassing probeert te bieden aan de toewijzing fout, maar sommige bronnen niet vrij. Dit komt als een geheugenlek en is het moeilijker om te debuggen. Om te helpen bij het vasts tellen van deze fouten, het opslagruimtebeheer pagina houdt een geschiedenis van stacktraces vanaf het tijd stip fout injectie. Deze sporen kunnen worden weer gegeven met de volgende fout opsporing opdracht: ! heap--p -f [nummer van sporen] Standaard de extensie weer gegeven alleen de laatste vier sporen. Automatisch koppelen een Debugger wanneer de toepassing wordt gestartSommige toepassingen zijn moeilijk te starten vanaf een opdrachtprompt of ze zijn geïnitieerd door andere processen. Geef voor deze toepassingen wanneer ze worden gestart, wordt een fout opsporingsprogramma automatisch gekoppeld aan hen. Dit is handig als de pagina heap is ingeschakeld voor die storingen proces en heap optreden. Zie voor meer informatie de/Debugparameter.Pageheap.exe is effectief wordt gebruikt controleren of een geheugen toewijzings proces, waaronder C++ stijl toewijzingen nieuwe en verwijderen, zolang de aangepaste toewijzings gratis functies uiteindelijk NT aanroepen heap-beheerinterfaces (dat wil zeggen, RtlAllocateHeap, RtlFreeHeap). Het volgende functies wordt gegarandeerd dat:
Vermijd het gebruik van statisch koppelen. Sommige toepassingen statisch gekoppelde om oude versies van de C-runtime zijn. Deze oude versies niet Windows NT heap API's aanroepen en Pageheap.exe kan worden gebruikt Controleer of deze toewijzingen. Dynamisch koppelen zorgt ervoor dat u de meest recente c krijgt runtime library (Msvcrt. dll). Klassen van Bugs gevonden door Pageheap.exePageheap.exe detecteert de meeste heap fouten; het is echter gericht op problemen heap en niet gericht op lekkage. Pageheap.exe is Hoewel deze functionaliteit heeft lekt beperkt succes met het vinden van heap Dit doel.Een van de voordelen van Pageheap.exe is dat veel fouten worden gedetecteerd wanneer ze zich voordoen. Bijvoorbeeld, een uit één-byte-fout op het einde van een dynamisch toegewezen buffer kan leiden tot een directe toegang schending. Er zijn enkele soorten fouten die niet kunnen worden gedetecteerd wanneer zij optreden. In deze gevallen is het foutrapport uitgesteld totdat het blok is vrij gegeven.
Deze tabel samenvouwen
Debugging Page Heap storingenVoor meer informatie over fout opsporing pagina Heap storingen, Raadpleeg bijApplication Compatibility Tookit verwijzingbeschikbaar binnen de compatibiliteit van toepassingen Toolkit.Voor deSyntaxisvan Pageheap.exe enVoorbeeldenvan Pageheap.exe, RaadpleegApplication Compatibility Tookit verwijzingbeschikbaar binnen de compatibiliteit van toepassingen Toolkit. Voor meer informatie Zie de volgende Microsoft Knowledge Base-artikel: 294895
(http://support.microsoft.com/kb/294895/
)
De Windows Application Compatibility Toolkit downloadenEigenschappenArtikel ID: 286470 - Laatste beoordeling: zaterdag 26 februari 2011 - Wijziging: 2.0 De informatie in dit artikel is van toepassing op:
Automatische vertaling BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten. De Engelstalige versie van dit artikel is de volgende:286470
(http://support.microsoft.com/kb/286470/en-us/
)
| Vertaalde artikelen
|




Naar boven








