Kuinka löytää ja korjata bugeja kaupallisissa ohjelmissa Windowsissa
Wikipedian mukaan ”ohjelmistovirhe on virhe, virhe, vika tai vika tietokoneohjelmassa tai järjestelmässä, joka saa sen tuottamaan virheellisen tai odottamattoman tuloksen tai käyttäytymään tahattomilla tavoilla ja lopulta kaatamaan sovelluksen. Prosessi vahvistamisesta vikoja kutsutaan ”virheenkorjaus” ja usein käyttää muodollisia tekniikoita tai työkaluja paikantaa vikoja .”
suurimman osan ajasta virheet voidaan toistaa kehittäjäympäristössä ja korjata ennen version lähettämistä tuotantoon. Mutta joskus viat riippuvat käyttäjien tietystä ympäristöstä tai profiilista—esimerkiksi käyttämällä erikoismerkkejä kansion nimessä—mikä vaikeuttaa virheen perussyyn ymmärtämistä. Pahimmat viat vaativat käyttäjätukea näytönjakosession perustamiseen, jotta käyttäjä voi seurata vian toistamista.
Dashlanessa Windows-tiimi käyttää useita työkaluja vikojen etsimiseen ja toistamiseen:
- TEKNISET lokit havaitsevat ongelmat ja auttavat korjaamaan ne, joskus vaativat useita iteraatioita ja vuorovaikutusta käyttäjän kanssa, joka kokee ongelman
- Microsoft Process Monitor ja Process Explorer, kaksi ilmaista työkalua, jotka osoittavat huonot asennukset tai vioittuneen ympäristön
äskettäin Microsoft esitteli uuden version toisesta kehittäjätyökalusta, WinDbg: stä. Tämä sovellus on siirretty UWP app, on vapaasti saatavilla Microsoft Store, ja mukana erittäin mukava ja hyödyllinen ominaisuus: TTD, tai aikamatkustuksen virheenkorjaus. Ajattele aikaa, jolloin sinun piti korjata erittäin vaikeasti toistettava vika, joka tapahtui vain yhdellä tietyllä koneella. Tai ajattele aikaa, jonka käytit kehittäjäympäristön asentamiseen kyseiseen koneeseen – jos voisit. Ja sitten miettiä, kuinka monta kertaa sinun piti käynnistää sovelluksen debug tilassa, jotta toistaa vika, ja sitten olet jäänyt vioittunut linja vahingossa lyömällä F5 sijasta F11. TTD muuttaa tämän pala kakkua, koska sinun tarvitsee vain tallentaa vika kerran voit toistaa sen uudelleen ja uudelleen, sekä eteen-ja taaksepäin.
aikamatkustuksen virheenkorjaus WinDbg
TTD on käänteinen virheenkorjausratkaisu. Se koostuu 3 vaiheet:
- Tallenna sovellus tai prosessi koneessa, joka voi toistaa virheen. Käytä WinDbg: tä järjestelmänvalvojan oikeuksilla ja käynnistä suoritustiedosto tai liitä siihen jo käynnissä oleva ohjelma tallentaaksesi sen jäljen. Tuloksena on tiedosto (.run extension), joka sisältää kaikki vian toistamiseen tarvittavat tiedot. Tästä syystä, Dashlane Voimme käyttää sitä vain debug bugeja, jotka tapahtuvat ennen kirjautumista, jotta ei kerätä käyttäjien arkaluonteisia tietoja.
- Toista tallennettu jälki eteen-ja taaksepäin niin monta kertaa kuin on tarpeen ongelman ymmärtämiseksi. Kun WinDbg on ladattu, se luo jäljen indeksin, joka tarjoaa täydellisen ja nopean muistin haun. Tallennetun tiedoston voi ladata mille tahansa koneelle; avaamme yleensä kehittäjän koneella, johon voimme ladata lähdekoodia ja PDB-symboleita. Näin voimme toistaa jäljityksen, kun ajamme koodia IDE: ssä tallennetun koneen prosessi-ja muistitietojen avulla. (Varmista, että lähdekoodi ja symbolit vastaavat tallennettua prosessiversiota.)
- analysoi lisäämällä keskeytyspisteitä, suorita kyselyitä tunnistaa yhteisiä koodiongelmia, ja saada täysi pääsy muistin ja paikallisten ymmärtää, mitä on tekeillä.
esimerkki
Oletetaan, että olet kirjoittanut ja rakentanut yksinkertaisen konsolisovelluksen.
void
GuiltyFunction(
int
a,
int
b,
int
c)
{
int
x = a + b + c;
int
y = 0;
y = x / b;
}
int
main()
{
int
a = 10;
int
b = 0;
int
c = 3;
GuiltyFunction(a, b, c);
return
0;
}
oletetaan rakennettu sovellus (TestTTD.exe) ja symbolitiedosto (TestTTD.pdb) ovat C:\TestTTD\bin, ja lähdekoodi on C:\TestTTD\src.
ennätys
- Open WinDbg korotetuilla oikeuksilla.
- valitse Tiedosto-välilehdessä käynnistystiedosto (advanced). Kirjoita suoritettavaan kenttään C:\TestTTD\TestTTD.exe. Tarkista Tietueprosessi aikamatkustuksen virheenkorjauksella, aseta Tulostushakemisto kirjoitettavaksi ja olemassa olevaksi poluksi ja valitse sitten OK.
- sovelluksen kaatuessa WinDbg tallentaa jäljitystiedoston (.run extension) ja kirjaa sijainnin ladatessaan sitä.
- Pysäytä debuggeri ja avaa jäljitystiedoston sijainti.
Uusinta
- Open WinDbg.
- valitse Tiedosto-välilehdessä Asetukset vasemmasta sivupalkista. Valitse Vianetsintäasetukset, lisää C:\TestTTD\src Lähdepolun kenttään ja C:\TestTTD\bin symbolin polkukenttään. Tallenna muutokset napsauttamalla OK.
- valitse Tiedosto-välilehdessä avaa jäljitystiedosto ja selaa tallennusvaiheessa luotua jäljitystiedostoa.
analysoi
- kun tallennettu jäljitystiedosto on ladattu WinDbg: hen, lisää keskeytyspiste pysäyttääksesi ja analysoidaksesi sovelluksen tilan. Lataa komentosarjatiedosto lähde-välilehdeltä ja napsauta sitten halutun keskeytyspisteen rivin vasenta reunaa. Osuma F5 ajaa keskeytyspisteeseen.
- nyt osui F10 astumaan yli, kuten Visual Studion virheenkorjaussessiossa. Klikkaa askel yli takaisin ajaa taaksepäin.
päätelmät
kun virheenkorjaus tuotantokoodia ja tuskin toistettavissa olevia vikoja, WinDbg ja sen aikamatkustuksen virheenkorjaus ovat loistava työkalu kehittäjille, jotka voivat säästää aikaa ja resursseja tallentamalla viallisen sovelluksen juuri vaikuttavaan ympäristöön ja antamalla sinulle mahdollisuuden toistaa sen missä tahansa. Lisätietoja saat Microsoftin blogista tai katso heidän demonsa MSDN Channel 9: n sivuilta.