Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp worden ontwerp- en testoverwegingen beschreven voor het gebruik van de systeemeigen foutopsporingsprogrammaobjecten in JavaScript-extensies.
Systeemeigen foutopsporingsprogrammaobjecten vertegenwoordigen verschillende constructies en gedrag van de foutopsporingsprogramma-omgeving. De objecten kunnen worden doorgegeven aan (of verkregen in) JavaScript-extensies om de status van het foutopsporingsprogramma te manipuleren.
Zie JavaScript Debugger Scripting voor algemene informatie over het werken met JavaScript.
Overwegingen bij het ontwerpen van gegevensmodellen voor foutopsporing
Ontwerpprincipes
Houd rekening met de volgende principes om ervoor te zorgen dat uw foutopsporingsprogramma-extensies informatie bevatten die detecteerbaar, doorzoekbaar en scriptbaar is.
- Informatie bevindt zich dicht bij de locatie waar deze nodig is. Informatie over een registersleutel moet bijvoorbeeld worden weergegeven als onderdeel van een lokale variabele die een registersleutelgreep bevat.
- Informatie is gestructureerd. Informatie over een registersleutel wordt bijvoorbeeld weergegeven in afzonderlijke velden, zoals sleuteltype, sleutel-ACL, sleutelnaam en waarde. Dit betekent dat de afzonderlijke velden toegankelijk zijn zonder tekst te parseren.
- Informatie is consistent. Informatie over registersleutelgrepen wordt zo veel mogelijk gepresenteerd als informatie over bestandsingangen.
Vermijd deze benaderingen die deze principes niet ondersteunen.
- Structureer uw items niet in één platte "Keukenbak". Met een georganiseerde hiërarchie kunnen gebruikers zoeken naar de informatie die ze zoeken zonder voorafgaande kennis van wat ze zoeken en ondersteuning bieden voor detectie.
- Converteer geen klassieke dbgeng-extensie door het gewoon naar het model te verplaatsen terwijl u nog steeds schermen met onbewerkte tekst uitvoert. Dit kan niet worden samengevoegd met andere extensies en kan niet worden opgevraagd met LINQ-expressies. In plaats daarvan worden de gegevens opgesplitst in afzonderlijke, doorzoekbare velden.
Naamgevingsrichtlijnen
- Hoofdlettergebruik van velden moet PascalCase zijn. Een uitzondering kan worden overwogen voor namen die algemeen bekend zijn in een andere behuizing, zoals jQuery.
- Vermijd het gebruik van speciale tekens die normaal gesproken niet worden gebruikt in een C++-id. Vermijd bijvoorbeeld het gebruik van namen zoals 'Totale lengte' (die een spatie bevat) of '[grootte]' (die vierkante haken bevat). Met deze conventie kunt u eenvoudiger gebruik maken van scripttalen waarbij deze tekens niet zijn toegestaan als onderdeel van id's, en maakt u ook eenvoudiger gebruik vanuit het opdrachtvenster mogelijk.
Richtlijnen voor organisatie en hiërarchie
- Breid het hoogste niveau van de naamruimte voor het foutopsporingsprogramma niet uit. In plaats daarvan moet u een bestaand knooppunt in het foutopsporingsprogramma uitbreiden, zodat de informatie wordt weergegeven waar deze het meest relevant is.
- Dupliceer geen concepten. Als u een gegevensmodelextensie maakt met aanvullende informatie over een concept dat al bestaat in het foutopsporingsprogramma, kunt u de bestaande informatie uitbreiden in plaats van deze te vervangen door nieuwe informatie. Met andere woorden, een extensie die details over een module weergeeft, moet het bestaande moduleobject uitbreiden in plaats van een nieuwe lijst met modules te maken.
- Gratis zwevende hulpprogrammaopdrachten moeten deel uitmaken van de naamruimte Debugger.Utility . Ze moeten ook op de juiste wijze subnaamruimte hebben (bijvoorbeeld Debugger.Utility.Collections.FromListEntry)
Compatibiliteit met eerdere versies en ingrijpende wijzigingen
Een gepubliceerd script mag de compatibiliteit met andere scripts die ervan afhankelijk zijn niet verbreken. Als een functie bijvoorbeeld naar het model wordt gepubliceerd, moet deze op dezelfde locatie blijven en, indien mogelijk, met dezelfde parameters.
Geen gebruik van externe resources
- Extensies mogen geen externe processen spawn. Externe processen kunnen het gedrag van het foutopsporingsprogramma verstoren en zullen zich misdragen in verschillende scenario's voor externe foutopsporingsprogramma's (bijvoorbeeld dbgsrv remotes, ntsd remotes en 'ntsd -d remotes')
- Extensies mogen geen gebruikersinterface weergeven. Het weergeven van elementen van de gebruikersinterface gedraagt zich onjuist in scenario's voor externe foutopsporing en kan scenario's voor console-foutopsporing verbreken.
- Extensies mogen de debugger-engine of debugger-UI niet manipuleren via niet-gedocumenteerde methoden. Dit veroorzaakt compatibiliteitsproblemen en gedraagt zich onjuist voor foutopsporingsprogramma-clients met verschillende gebruikersinterfaces.
- Extensies moeten alleen toegang krijgen tot doelgegevens via de gedocumenteerde foutopsporingsprogramma-API's. Het verkrijgen van toegang tot informatie over een doel via win32-API's mislukt voor veel externe scenario's en zelfs voor sommige lokale foutopsporingsscenario's binnen de beveiligingsgrenzen.
Geen gebruik van de specifieke functies van Dbgeng
Scripts die zijn bedoeld om te worden gebruikt als extensies, mogen waar mogelijk niet afhankelijk zijn van de specifieke functies van dbgeng (zoals het uitvoeren van 'klassieke' foutopsporingsprogramma-extensies). Scripts moeten kunnen worden gebruikt boven op elk foutopsporingsprogramma dat als host fungeert voor het gegevensmodel.
Extensies voor foutopsporingsprogramma testen
Extensies werken naar verwachting in een breed scala aan scenario's. Hoewel sommige extensies mogelijk specifiek zijn voor een scenario (zoals een kernelfoutopsporingsscenario), moeten de meeste extensies naar verwachting in alle scenario's werken of metagegevens hebben die de ondersteunde scenario's aangeven.
Kernelmodus
- Live kernel foutopsporing
- Foutopsporing voor kerneldumps
Gebruikersmodus
- Foutopsporing in live gebruikermodus
- Foutopsporing in gebruikersmodusdump
Overweeg bovendien deze gebruiksscenario's voor foutopsporingsprogramma's
- Foutopsporing voor meerdere processen
- Foutopsporing voor meerdere sessies (bijvoorbeeld dump + live gebruiker binnen één sessie)
Gebruik van externe foutopsporingsprogramma's
Test op de juiste werking met de gebruiksscenario's voor externe foutopsporingsprogramma's.
- dbgsrv remotes
- Externe verbindingen met ntsd
- ntsd -d afstandsbedieningen
Zie Foutopsporing met CDB en NTSD eneen processerver activeren voor meer informatie.
Regressietest
Onderzoek het gebruik van testautomatisering die de functionaliteit van uw extensies kan controleren, omdat nieuwe versies van het foutopsporingsprogramma worden uitgebracht.
Zie ook
Systeemeigen Debugger-objecten in JavaScript-extensies