Ako používať Pageheap.exe v systéme Windows XP, Windows 2000 a Windows Server 2003

Preklady článku Preklady článku
ID článku: 286470 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok popisuje používanie nástroja Page haldy (Pageheap.exe) v systéme Microsoft Windows XP, Microsoft Windows 2000 a Microsoft Windows Server 2003.

DALSIE INFORMACIE

Pageheap.exe nastaví príznaky haldy stránky, ktoré vám pomôžu nájsť súvisiacich s haldy korupcii. To môže tiež pomôcť zistiť netesnosti v programoch, ktoré sú beží na Windows 2000 Professional Service Pack 2 (SP2) a Windows XP Profesionálnych systémov.

Pageheap.exe zavádza softvér validácie vrstva (Page haldy manažér) medzi aplikáciou a systém, ktorý overí všetky operácie dynamickej pamäte (prídelov oslobodzuje, a ostatné haldy operácie). Ak je zapnuté Page haldy manažér, aplikácia, ktorá sa testuje je potom začala pod ladiaceho nástroja. Ak sa problém vyskytuje, spôsobí ladiaceho nástroja zlom.

Dôležité upozornenie Pageheap.exe nešpecifikuje, čo je to chyba, ale to bude pád systém, keď sa vyskytuje problém. Umožňuje overenie vrstvy, už existuje v systéme knižnice Ntdll.dll v systéme Windows 2000 Professional SP2 a Windows XP Professional. Pageheap.exe nebude fungovať na predchádzajúce verziách systému Microsoft Windows.

Ak aplikácia testované nie je začala v ladiaceho nástroja a zistil chybu, to bude len pád bez akákoľvek spätná väzba.

Koncepty

Spoločný problém v vývoj aplikácií je haldy. Táto situácia zvyčajne nastane pri žiadosti alokuje blokom pamäti haldy veľkosť a potom píše venovať adresy pamäte mimo požadovaná veľkosť haldy blok. Haldy môže tiež nastať pri žiadosti píše blokovať pamäte, ktorú už uvoľnil.

Dve koncepcie sú stredobodom porozumenie príkazy súvisiace s Pageheap.exe a spôsob, ako ju používať:
  • Chyby v blokoch haldy zistia buď umiestnením neprístupné stránku na konci pridelenia alebo kontrolou výplne vzory, keď je uvoľnený blok.
  • Existujú dve zhromaždenia (celostranovým haldy a normálne stránky haldy) pre každý haldy vytvorí v procese že stránka haldy zapol.
    • Celostranovým haldy odhalí chyby v blokoch haldy umiestnením neprístupné stránka na konci pridelenia. Výhoda tohto prístupu je, že ste dosiahnuť "náhlej smrti," znamená, že proces bude prístup porušovať (AV) presne v mieste, kde zlyhanie. Toto správanie zjednodušuje zlyhania na ladenie. Nevýhodou je, že každé pridelenie používa aspoň jednu stranu spáchaný pamäť. Pre náročné na pamäť proces systém zdrojov môže byť rýchlo vyčerpané.
    • Normálne stránky haldy je možné použiť v situáciách, kde spôsobujú pamäťové obmedzenia celostranovým haldy nepoužiteľný. Je kontrol vzorky výplne, keď je uvoľnený blok haldy. Výhodou tejto metódy je, že výrazne znižuje spotrebu pamäte. Nevýhodou je, že chyby budú zistené, iba keď bloku uvoľnený. To robí zlyhania ťažšie na ladenie.

Download umiestnenie pre nástroj na Pageheap

Chcete prevziať najnovší balík nástrojov ladenia, kliknite na nasledujúce odkaz:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx


Vyberte najnovšie vydanie ladiace nástroje. Keď nainštalujete nástroje, vyberte Vlastné Inštalácia a potom nainštalovať do adresára s vhodný názov. Napríklad nainštalovať nástroje na C:\Debug alebo C:\Debugtools.

Výber metódy vyšetrovať haldy bloku chyby

Väčšina z chyby v blokoch haldy sa objavujú v jednom dvoma spôsobmi:
  • Celostranovým haldy: miesto neprístupné stránku na konci rozdelenie.
  • Normálne stránky haldy: kontrola výplne štruktúr, keď dostane bloku uvoľnený.

Celostranovým haldy

Celostranovým haldy musí byť povolené na jednotlivé procesy, alebo podľa obmedzené parametre pre veľkým procesy, z dôvodu jej vysokej pamäte požiadavky. To nie je možné zapnúť systém-široký, pretože je ťažké vyhodnotiť veľkosť vyžaduje stránkovacieho súboru. Pomocou súboru stránku, ktorá je príliš malá s systém-široký celostranovým haldy vykreslí systému unbootable.

V výhodou celostranovým haldy je to, že príčiny proces prístupu porušovať (AV) presne v mieste, kde zlyhanie. To zjednodušuje zlyhania na ladenie. V objednávku aby dokázali určiť zlyhania, prvé použitie normálne stránky haldy určiť rozsah kde zlyháva proces, a potom použiť celostranovým haldy na jednotlivec rozsiahle procesov na ktoré obmedzené triedy pridelenia (to znamená, Osobitná veľkosť rozsahu alebo konkrétnej knižnice).

Normálne stránky haldy

Normálne stránky haldy možno použiť na testovanie rozsiahleho procesy bez vysokou spotrebou pamäte celostranovým haldy vyžaduje. Však normálne stránky haldy zdržanie detekcie, kým vyslobodenia bloky, čím zlyhania ťažšie na ladenie.

Vo všeobecnosti sa používa normálne stránky haldy pre počiatočné rozsiahlych procesy testovanie. Potom, ak sú zistené problémy, umožniť celostranovým haldy obmedzené triedy prídelov v tých procesy.

Normálne stránky haldy môže byť bezpečne povolený systém-široký pre všetkých procesy. Je to veľmi užitočné na skúšobné lavice, ktoré vykonávajú všeobecný systém overenie, ako zložka zameral testovanie. Normálne stránky haldy môže byť aj povolené pre jeden proces.

GFlags pomocou systémových stránky haldy

V GFlags nástroj slúži na umožnenie systémových stránky haldy. S cieľom Príkaz GFlags prejavili, musíte reštartovať počítač po vydaní príkaz.

Aby systém-široký normálne stránky haldy:
  1. Zadajte v príkazovom riadku:gflags - r + hpa

  2. Reštartujte počítač.
Ak chcete vypnúť systém-široký normálne stránky haldy:
  1. Zadajte v príkazovom riadku:gflags - r - hpa

  2. Reštartujte počítač.
Poznámka: Žiadne iné GFlags nastavenia sú užitočné, keď zapnete stránku haldy. Ak iné nastavenia zobrazujú súvisia s haldy sú zapnuté, potom stránky chýb halda mohli byť zavedené kvôli konflikty medzi stránku haldy manažér a tieto "neškodný" haldy príznaky.

GFlags pomocou jediného procesu stránku haldy

Môžete zapnúť stránku haldy sledovať jeden konkrétny proces. Urobiť Toto, postupujte nasledovne:
  1. Do príkazového riadka, zmeňte adresár, kde ste nainštalovali podpríkazu debug nástroje.
  2. Do príkazového riadka zadajte nasledovný príkaz a stlačte kláves ZADAJTE:
    Gflags.exe /p /enableLsass.exe
    Poznámka: Lsass.exe stojany pre názov procesu chcete sledovať pomocou nástroja Pageheap.
  3. Ak už nepotrebujete stránku haldy monitorovania, vypnúť monitorovanie. To chcete urobiť, zadajte nasledovný príkaz a potom stlačte kláves ZADAJTE:
    Gflags.exe /p /disable Lsass.exe
    Poznámka: Lsass.exe stojany pre názov procesu chcete sledovať pomocou nástroja Pageheap.
  4. Na zoznam všetkých programov, ktoré v súčasnosti majú Pageheap overenie zapnuté, zadajte nasledujúce v príkazovom riadku, a potom stlačte ZADAJTE:
    Gflags.exe /p

Nezarovnanej pridelenia

Mať vždy garantované haldy manažéri Windows (všetky verzie) že haldy pridelenia mať začiatočnú adresu, ktorá je 8-bajtové zosúladiť ( 64-bitové platformy zarovnanie je 16 bajtov). Robí manažér haldy stránku rovnakú záruku. Je to nemožné, však, ak chcete mať koniec-z--rozdelenie presne na konci stránky. Presný koniec-z-stránky pridelenia je potrebné tak, že mimo-o-jednobajtovým chyba bude spúšťať čítanie alebo napísať do neprístupné stránky a spôsobiť bezprostredné poruchy.

Ak používateľ požaduje veľkosť bloku nie je 8-bajtové zladené, potom stránku haldy nemôže splniť "Štart adresu. 8-bajtové zarovnaný" a "koniec adresu stránky zarovnaný"obmedzenia. Roztok sa splniť prvé obmedzenie a Štart blok 8-bajtové zarovnané. Potom použite vzorku malé výplne medzi koniec bloku a začiatkom stránke neprístupné. Túto vzorku výplne môže byť od 0 bajtov cez 7 bajtov v dĺžky na 32-bitové architektúry. Výplne vzor sa kontroluje na voľný.

Ak je potrebné okamžité poruchy detekcie pre týchto prídelov, ktoré inak budú mať vzorku výplne na konci manažér stránku haldy ignorovať pravidla 8-bajtové zarovnanie a vždy zarovnať koniec prideľovanie na hranicu stránky pomocou / nezarovnanej a / plné parametre. Ďalšie informácie nájdete v téme / nezarovnanej parameter.

POZNÁMKA: Niektoré programy nespájať 8-bajtové zarovnanie a ich Stop správne pracovať s / nezarovnanej parameter. Microsoft Internet Explorer je jedným z takýchto programu.

Nezapojené stránky pre celostranovým haldy pridelenia

Jadro celostranovým haldy implementácie zaväzuje dve stránky pre akúkoľvek rozdelenie menšie ako jedna strana. Jedna strana sa používa na prideľovanie používateľa, a ostatné sa neprístupné na konci medzipamäte.

Priebehy medzipamäte sa dá zistiť pomocou pásmo vyhradené virtuálne priestor, namiesto neprístupné spáchaný stránku. Porušenie prístupu výnimka sa vyskytne, keď proces dotýka že vyhradený virtuálny priestor. Toto prístup môžete znížiť spotrebu pamäte až 50 percent. Pre viac informácie, pozri / viazanosť parameter.

Poruchy vstrekovania

Môžete ovládať stránku haldy manažér tak, aby niektoré pridelenia zámerne zlyhala. Je to užitočné pri simulovaní málo pamäte podmienok bez vlastne pomocou všetkých systémových prostriedkov.

Zadajte číslo od 1 do 10.000 zastupovať pravdepodobnosť, že pridelenie zlyhajú. Pomocou pravdepodobnosť 10.000 zabezpečuje, že 100 percent pridelenia zlyhajú. A pravdepodobnosť 2,000 určuje, že približne 20 percent z pridelenia zlyhajú.

Manažér stránku haldy stará špeciálne vyhnúť sa poruchy vstrekovanie oboch prvých 5 sekúnd v procese života a Windows NT Zavádzač kódu trasy (pre exampole, funkcia LoadLibrary, FreeLibrary). Ak nie je 5 sekúnd dostatočné, aby umožnili svoj proces kompletné štarte, potom môžete zadať dlhší časový limit na začiatku procesu. Ďalšie informácie nájdete v téme /Fault parameter.

Keď použijete /Fault Parameter a procesu je testované má chybu, výnimku budú zvýšené. Vo všeobecnosti, dôvodom je, že operáciu vyhradenia Vráti hodnotu NULL a uplatňovanie neskôr pokúša získať prístup k pridelených pamäť. Pretože prideliť zlyhal, avšak pamäť nie je prístupný, a preto sa vyskytne porušenie prístupu.

Ostatné dôvodu, že výnimka je, že aplikácia sa pokúsi vysporiadať s pridelením zlyhanie, ale nezbavuje niektoré zdroje. To sa prejavuje ako pretečenie pamäte a je náročnejšie na ladenie.

S cieľom pomôcť diagnostikovať tieto zlyhania, manažér haldy stránky udržiava históriu zásobníka stôp od okamihu poruchy injekcie. Tieto stopy môžu byť zobrazené s nasledujúce ladiaci nástroj príkaz:

! heap -p -f [číslo stopy]

Predvolené rozšírenie zobrazí iba posledná štyri stopy.

Automaticky pripojením ladiaceho nástroja po spustení aplikácie

Niektoré aplikácie sú ťažko spustiť z príkazového riadka alebo sú splodeniu z iných procesov. Pre tieto aplikácie spresniť, že vždy, keď sú spustené, ladiaceho nástroja bude automaticky pripojí k nim. Je to užitočné, ak je stránka haldy zapnutá pre tento proces a haldy zlyhania vyskytnúť. Ďalšie informácie nájdete v téme / Debug parameter.

Pageheap.exe je účinná, ak sa používa overiť pamäť procesu prideľovania, vrátane C++ štýl pridelenia nových a odstrániť, tak dlho, ako vlastné prideľovania/voľný funkcie nakoniec spochybnili NT haldy riadenia rozhrania (to znamená, RtlAllocateHeap, RtlFreeHeap). V tieto funkcie sú zaručené na to, že:
  • Funkcie ako HeapAlloc, HeapFree, HeapReAlloc: Tieto funkcie sú vyvážané kernel32.dll a zavolať NT haldy rozhrania. Funkcie ako GlobalAlloc, GlobalFree, GlobalReAlloc: Tieto funkcie sú vyvážané kernel32.dll a volať buď priamo alebo nepriamo do NT heap rozhrania.
  • Funkcie ako Funkcia LocalAlloc, LocalFree, LocalReAlloc: Tieto funkcie sú vyvážané kernel32.dll a volať buď priamo alebo nepriamo do NT heap rozhrania.
  • Funkcie Funkcia malloc, Voľný, realloc, Mzadaná veľkosť, Rozbaľte: Tieto funkcie sú vyvážané msvcrt.dll a volať buď priamo alebo nepriamo do NT haldy. To nebolo prípade vždy. C run-time používa mať rôzne haldy implementácie, ale súčasné c run-time volania priamo do NT haldy.
  • Prevádzkovatelia nové, odstrániť, nové] , odstrániť] : Tieto funkcie sú vyvážané msvcrt.dll a volať buď priamo alebo nepriamo do NT haldy.
Akýkoľvek iný prideľovania a voľný súbor funkcií pravdepodobne je vlastné schémy, a nie je zaručené zavolať priamo alebo nepriamo do NT haldy. Len zdrojový kód inšpekcie alebo môžu odhaliť spustený pod ladiaci nástroj skutočné uplatňovanie.

Nepoužívajte statické prepojenia. Niektoré aplikácie boli staticky spojené s staré verzie c runtime. Tieto staré verzie nevyžadujú Windows NT haldy API, a Pageheap.exe sa nedá použiť na overenie týchto transferov. Dynamické linkovanie zaručuje, že dostanete najnovšie c knižnice runtime (msvcrt.dll).

Tried chyby nájdené Pageheap.exe

Pageheap.exe rozpozná väčšina haldy-súvisiace chyby; je však zamerané na haldy korupčné problémy a nie zameraná na netesnosti. Pageheap.exe má obmedzený úspech pri hľadaní haldy netesnosti, aj keď má funkcie cieľ.

Jednou z výhod Pageheap.exe je, že mnohí keď sa stanú sú zistené chyby. Napríklad, mimo-o-jednobajtovým chyba na koniec dynamicky pridelené medzipamäte môže spôsobiť okamžitý prístup porušenie. Existuje niekoľko typov chyby, ktoré nemôže byť zistený pri ich vyskytnúť. V tých prípadoch, správa o chybe je oneskoriť, kým nie je uvoľnený blok.
  • Neplatný haldy ukazovateľ: Všetky Win32 a Windows NT úrovni haldy rozhrania brať ako prvý Parameter smerník na haldy, kde by sa stalo operácie. Stránky haldy manažér zistí neplatný haldy ukazovateľ v okamihu hovor je vyrobené.
  • Neplatný haldy bloku ukazovateľ: Po bloku, prideľovaná, môže sa použiť ako parameter pre niekoľko heap rozhrania, najmä free() triedy rozhraní. Stránka haldy Správca okamžite zistí neplatný haldy bloku ukazovateľ. Pozri Ladenie stranu Haldy zlyhania pre spôsob, ako zistiť, či Neplatná adresa je pár bajtov vypnuté, alebo je úplne nesprávne.
  • Viacvláknové nesynchronizované prístup k haldy: Niektoré aplikácie vplávať do haldy z viacnásobných vlákien. Toto typ scenár vyžaduje nastavenie príznaku (užívateľ), ktorá sa bude spúšťať získanie zámku haldy. Manažér stránku haldy rozpozná tento typ porušenie keď dva závity pokúsi súčasne spochybnili haldy.
  • Predpoklady o prerozdelení blok na rovnakej adrese: Operáciu prerozdelenie nie je zaručená návrat rovnaké adresa. To platí najmä pri prerozdelení redukuje veľkosť blok. Niektoré aplikácie predpokladať, že prerozdelenie sa vrátia rovnakú adresu. Manažér haldy stránky vždy alokuje nový blok počas prerozdelenie a oslobodzuje staré bloku. Voľného bloku je chránený pre čítanie a zápis prístup, a preto akýkoľvek prístup k nemu budú zvyšovať porušenie prístupu.
  • Dvojité zadarmo: Táto chyba, kde sú freed rovnaké haldy bloky niekoľkokrát, je spoločné v niektorých aplikáciách. To okamžite odhalenej stránku haldy Správca, pretože v druhom zadarmo, bloku nebude mať riadne predpony hlavičky a nie je možné nájsť medzi pridelené blokov. Pozri Ladenie stránku haldy Zlyhanie spôsobov analýzy trasovanie zásobníka prvé voľné pôsobenie. Toto chyba môže byť variant prerozdelenie problém, pretože, keď uplatňovanie uvoľní, čo si myslí, že je adresa bloku, bol tento blok už uvoľnené ako súčasť nutné prerozdelenie.
  • Prístup blok po zadarmo: Bloky uvoľnené pamäte chovajú na krátky čas stránku haldy Správca v bazéne chránenej pamäte. Prístup týchto blokoch bude zvyšovať porušenie prístupu. Založený na princípe "lokalita", väčšinu problémov by byť chytené ak voľný chránených bazén je dostatočne veľká. Ak sa uvoľňuje blok je stále chránené bazén, chyba ulovený okamžite. Avšak, ak pamäte bol opätovne použiť, potom je menšia šanca nájsť chybu alebo identifikáciu kód, ktorý ju spôsobil.
  • Prístup po skončení pridelenou bloku: Manažér haldy stránky umiestni neprístupné stránky okamžite po pridelenou bloku. Akýkoľvek prístup za koniec bloku budú zvyšovať porušenie prístupu. Niektoré aplikácie očakávať pridelenia sa 8-bajtové zarovnané. Táto funkcia podporila od systému Windows NT 3.5 haldy manažérov. Žiadosť veľkosť, ktorá nie je 8-bajtové zarovnaný stále získať adresu 8-bajtové zarovnaný, ale to ponecháva niekoľko bajtov po skončení bloku, ktoré sú stále prístupné. Ak uplatňovanie kazí iba tých niekoľko bajtov, potom chyba budú ulovené len prostredníctvom kontroly prípona typu blok keď bloku je uvoľnený.
  • Prístup pred začatím pridelenou bloku: Manažér haldy stránka môže poučiť prostredníctvom nastaviteľná vlajkou na miesto neprístupné stránku na začiatku bloku, skôr ako koniec. Akýkoľvek prístup pred začiatkom bloku budú zvyšovať prístup porušenie.
Zbaliť túto tabuľkuRozbaliť túto tabuľku
ZlyhanieNormálne stránky haldyCelostranovým haldy
Neplatný haldy ukazovateľOkamžite ulovenýchUlovené okamžite
Neplatný haldy bloku ukazovateľUlovené okamžiteOkamžite ulovených
Nesynchronizované prístupOkamžite ulovenýchUlovené okamžite
Predpoklad o prerozdelení adresa90% až do reálneho Voľný90% ulovených okamžite
Dvojité zadarmo90% ulovených okamžite90% ulovených okamžite
Opätovné použitie po zadarmo90% až real zdarma90 % okamžite ulovených
Prístup po koniec blokuUlovené na VoľnýOkamžite ulovených
Prístup pred začiatkom blokuUlovené na VoľnýOkamžite ulovených (osobitnú vlajku)

Debugging Page haldy zlyhania

Ďalšie informácie o ladení stránku haldy zlyhania, prosím pozrite sa na Uplatňovanie kompatibility Tookit odkaz k dispozícii vo vnútri kompatibilitu aplikácií Toolkit.

Pre Syntax z Pageheap.exe a Príklady pomocou Pageheap.exe, pozrite sa prosím na Uplatňovanie kompatibility Tookit odkaz k dispozícii vo vnútri kompatibilitu aplikácií Toolkit.

Ďalšie informácie nájdete nasledujúce Článok databázy Microsoft Knowledge Base:
294895 Ako získať systém Windows Application Compatibility Toolkit

Vlastnosti

ID článku: 286470 - Posledná kontrola: 24. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
Kľúčové slová: 
kbenv kbinfo kbmt KB286470 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:286470

Odošlite odozvu

 

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