Megosztás a következőn keresztül:


Natív hibakereső objektumok JavaScript-bővítményekben – Tervezési és tesztelési szempontok

Ez a témakör a JavaScript-bővítményekben használt natív hibakereső objektumok tervezési és tesztelési szempontjait ismerteti.

A natív hibakereső objektumok a hibakereső környezet különböző szerkezeteit és viselkedését jelölik. Az objektumok átadhatók (vagy beszerezhetők) JavaScript-bővítményekbe a hibakereső állapotának módosításához.

A Hibakereső objektum JavaScript-bővítményeiről további információt a JavaScript-bővítmények natív hibakereső objektumai című témakörben talál.

A JavaScript használatával kapcsolatos általános információkért tekintse meg a JavaScript Hibakereső szkriptkészítés című témakört.

Hibakereső adatmodell tervezési szempontjai

Tervezési alapelvek

Vegye figyelembe az alábbi alapelveket, hogy a hibakereső bővítmények felderíthető, lekérdezhető és szkriptelhető információkat jeleníthessenek meg.

  • Az információ közel van ahhoz, ahol szükség van rá. Egy beállításkulcs információinak például egy beállításkulcs-leírót tartalmazó helyi változó részeként kell megjelennie.
  • Az információ strukturált. A beállításkulcsra vonatkozó információk például külön mezőkben jelennek meg, például kulcstípus, kulcs ACL, kulcsnév és érték. Ez azt jelenti, hogy az egyes mezők szöveg elemzése nélkül is elérhetők.
  • Az információk konzisztensek. A beállításkulcs-leírókra vonatkozó információk a fájlleírókkal kapcsolatos információkhoz hasonlóan jelennek meg.

Kerülje ezeket a megközelítéseket, amelyek nem támogatják ezeket az alapelveket.

  • Ne strukturálja az elemeket egyetlen lapos "Konyhai mosogatóba". A rendszerezett hierarchia lehetővé teszi a felhasználók számára, hogy anélkül keressenek információt, hogy előzetesen nem ismerik a keresett információkat, és támogatják a felderíthetőséget.
  • Ne konvertáljon klasszikus dbgeng-bővítményt úgy, hogy egyszerűen áthelyezi a modellbe, miközben továbbra is nyers szöveg képernyőit adja ki. Ez nem írható össze más kiterjesztésekkel, és nem kérdezhető le LINQ-kifejezésekkel. Ehelyett külön, lekérdezhető mezőkre bontsa az adatokat.

Elnevezési irányelvek

  • A mezők nagybetűsítésének PascalCase formátumban kell lennie. Kivételnek tekinthetők a más burkolatokban széles körben ismert nevek, például a jQuery.
  • Ne használjon olyan speciális karaktereket, amelyeket általában nem használnak C++ azonosítóban. Kerülje például a "Teljes hossz" (szóközt tartalmazó) vagy a "[size]" (szögletes zárójeleket tartalmazó) nevek használatát. Ez a konvenció lehetővé teszi a szkriptnyelvek egyszerűbb használatát, ha ezek a karakterek nem engedélyezettek az azonosítók részeként, és lehetővé teszi a parancsablakból való könnyebb használatot is.

Szervezeti és hierarchia-irányelvek

  • Ne bővítse ki a hibakereső névterének legfelső szintjét. Ehelyett ki kell terjesztenie egy meglévő csomópontot a hibakeresőben, hogy az információk ott jelenjenek meg, ahol a legrelevánsabb.
  • Ne duplikálja a fogalmakat. Ha olyan adatmodell-bővítményt hoz létre, amely további információkat sorol fel a hibakeresőben már létező fogalomról, ahelyett, hogy új információkkal próbálná lecserélni a meglévő információkat. Más szóval egy modul részleteit megjelenítő bővítménynek ki kell terjesztenie a meglévő modulobjektumot a modulok új listájának létrehozása helyett.
  • Az ingyenes lebegő segédprogram parancsainak a Debugger.Utility névtér részét kell képezniük. Az alnévteret is megfelelően kell megadni (pl. Debugger.Utility.Collections.FromListEntry)

Visszamenőleges kompatibilitás és megszakító változások

A közzétett szkriptek nem szakítják meg a kompatibilitást más, attól függő szkriptekkel. Ha például egy függvény közzétéve van a modellben, akkor lehetőség szerint ugyanazon a helyen és ugyanazon paraméterekkel kell maradnia.

Külső erőforrások használata nélkül

  • A bővítmények nem hozhatnak ki külső folyamatokat. A külső folyamatok zavarhatják a hibakereső viselkedését, és helytelenül viselkednek különböző távoli hibakereső forgatókönyvekben (például dbgsrv remotes, ntsd remotes és "ntsd -d remotes")
  • A bővítmények nem jeleníthetnek meg semmilyen felhasználói felületet. A felhasználói felület elemeinek megjelenítése helytelenül fog viselkedni a távoli hibakeresési forgatókönyvekben, és megszakíthatja a konzol hibakeresési forgatókönyveit.
  • A bővítmények nem módosíthatják a hibakereső motort vagy a hibakereső felhasználói felületét nem dokumentált módszerekkel. Ez kompatibilitási problémákat okoz, és helytelenül fog viselkedni a különböző felhasználói felülettel rendelkező hibakereső ügyfeleken.
  • A bővítményeknek csak a dokumentált hibakereső API-kon keresztül férhetnek hozzá a céladatokhoz. A céladatok win32 API-kkal való elérése sok távoli forgatókönyv esetében sikertelen lesz, és néhány helyi hibakeresési forgatókönyv is biztonsági határokon átnyúló.

A Dbgeng-specifikus funkciók nem használhatók

A bővítményként használni kívánt szkriptek nem támaszkodhatnak a dbgeng-specifikus funkciókra, amikor csak lehetséges (például a "klasszikus" hibakereső bővítmények végrehajtása). A szkripteknek használhatóknak kell lenniük bármely olyan hibakeresőn, amely az adatmodellt üzemelteti.

Hibakereső bővítmények tesztelése

A bővítmények várhatóan számos forgatókönyvben működnek. Bár egyes bővítmények egy adott forgatókönyvre (például egy kernel hibakeresési forgatókönyvre) vonatkozhatnak, a legtöbb bővítménynek minden forgatókönyvben működnie kell, vagy metaadatokkal kell rendelkeznie a támogatott forgatókönyvekre vonatkozóan.

Kernel mód

  • Élő kernel hibakeresése
  • Kernel memóriaállapot-kiszedés hibakeresése

Felhasználói mód

  • Élő felhasználói mód hibakeresése
  • Felhasználói módú memóriakép hibakeresése

Emellett vegye figyelembe ezeket a hibakeresők használati forgatókönyveit

  • Többfolyamatos hibakeresés
  • Több munkamenetes hibakeresés (pl. dömp + élő hibakeresési folyamat egyetlen munkameneten belül)

Távoli hibakereső használata

Tesztelje a megfelelő működést a távoli hibakereső használati forgatókönyveivel.

  • dbgsrv remotes
  • ntsd-távvezérlők
  • ntsd -d távoli vezérlők

További információ: Hibakeresés CDB és NTSD használatával , valamint folyamatkiszolgáló aktiválása.

Regressziós tesztelés

Vizsgálja meg a tesztautomatizálás használatát, amely képes ellenőrizni a bővítmények működését a hibakereső új verzióinak megjelenésekor.

Lásd még

JavaScript-bővítmények natív hibakereső objektumai

Natív hibakereső objektumok JavaScript-bővítményekben – Hibakereső objektum részletei.

JavaScript-hibakereső szkriptelése

JavaScript-hibakereső példaszkriptjei