mandag 27. oktober 2008

Grunnleggende info om feilsøking med Windbg.

Windbg er da det mest brukte verktøyet jeg bruker for å feilsøke problemer i Windows, enten det gjelder programmer som får uventede avsluttinger,system som kræsjer eller henger seg,mistanke om defekt maskinvare-Windbg kan brukes til å feilsøke alle disse problemene.

Windbg er en del av Debugging Tools For Windows som kan lastes ned gratis fra denne siden:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Windbg kan både brukes til å feilsøke i User Mode og i Kernel Mode delen av systemet. Og har en rekke utvidelser som kan brukes for å gi ekstra informasjon så i hovedsak kan man bruke det til å finne ut absolutt alt som kan være nødvendig for å løse problemet. Dog kan det være vanskelig i starten å få overblikk over alle funksjonene, så jeg skal prøve her å gi en rask innføring av feilsøking med Windgb. Det er 3 hovedgrupper man kan dele feilsøkingen med Windbg inn i:

1.Feilsøking av Windows Programmer.
Du kan enten starte programmet via Ctrl+E og kjøre det via Windbg eller trykke F6 for å hekte Windbg på en allerede kjørende prosess. Dette vil da gjøres i et såkalt "Invasive" modus noe som betyr at du får fullstendig kontroll over programmet men som også betyr at Windbg vil kunne forstyrre normal programoppførsel og også at når du stopper feilsøkingen vil også prosessen avsluttes.
Du har også mulighet for å feilsøke det i "Non-invasive" modus som gir deg litt mindre kontroll men vil minske forstyrellsen Windbg har på prosessen.

2.Feilsøking av Kræsj-dumper.
En kræsjdump er rett og slett et sammendrag av tilstanden til minnet idet noe kræsjet og som har blitt dumpet ut til en fil på harddisken. Windbg kan feilsøke både kræsjdumper tatt fra prosesser eller kræsjdumper fra operativsystemet. Typisk kan du konfiguere hvor mye informasjon du vil ta med- du kan velge mellom en Minidump-som bare dumper ut de mest nødvendige strukturene som kan ha med kræsjet å gjøre, En Kjernedump som dumper ut hele Kjerneminnet eller en fullstendig minnedump som dumper ut absolutt hele minnet.

3.Feilsøking av kjernen.
Dette gjøres ved at debuggeren aktiveres i oppstarten av den maskinen man vil feilsøke, (Kan gjøres i feks Msconfig) og deretter kobler en kabel mellom maskinen som skal feilsøkes og datamaskinen som kjører Windbg. (Enten serie.firewire eller USB 2.0) Deretter kan man koble til maskinen og vente til den går på en feil eller stoppe systemet direkte. Man kan også gjøre såkalt lokal kjernefeilsøking men dette fungerer som regel ikke så godt og gir som regel rimelig begrenset informasjon. Angående kablene som brukes kreves det spesielle debugger-kabler for feilsøking via serie og USB 2.0 tilknyttning mens firewire kan bruke regulære kabler. USB 2.0 debugging støttes bare av Vista og nyere.

Symbolfiler
Før man kan begynne å feilsøke med Windbg er det viktig å oppgi en bane til Symbolfilene. Symbolfiler lages av linkeren som lager .exe eller .dll filer men legges ofte ikke ved siden disse ikke er nødvendig får å kunne kjøre disse filene. Dog er det veldig nyttig å ha symbolfilene når man skal feilsøke da disse kan inneholde nyttig data slik som:
  • Globale Variabler
  • Lokale Variabler
  • Navn på funksjoner
  • FPO opptegnelser

Microsoft legger heldigvis ut alle symbolfilene til sine moduler gratis på en symbolserver slik at du fritt laste ned symbolfilene ved behov. Disse inneholder dog bare funksjonnavn og spesifikke globale variabler men er allikavel ekstremt nyttig å konfigurere. Du kan enten konfiguere Symbolbanen ved .sympath kommandoen eller ved å trykke CTRL+S i Windbg. Banen til Microsoft sin symbolserver er: srv*"Symbolbane"*http://msdl.microsoft.com/downloads/symbols hvor "Symbolbane" er banen hvor symbolene blir lastet ned til lokalt til din maskin. Deretter skal symbolene bli lastet inn ved behov straks du kjører .reload. Om du har problemer med å få symbolene til å laste seg inn ordentlig kan du prøve å bruke !sym noisy kommandoen for å undersøke hvordan symbolene lastes.

Husk forøvrig på at en minidump fil ikke inneholder all informasjon om de kjørbare image filene til systemet og det kan være fordelaktig å legge inn banen til microsofts symbolserver også der slik at den kan laste ned image filene automatisk ved behov. Image banen settes ved å trykke CTRL+I eller skrive bruke .exepath kommandoen.




Ingen kommentarer: