Guffa | Foto | Programmering

Felsökning - del 2

För att kunna hitta fel i koden så är det bra att veta vad som egentligen händer när en sida körs, och vilken typ av felmeddelande som kan dyka upp i de olika stegen. Man tjänar nämligen mycket tid på att veta var man inte behöver leta efter fel.

Det här är vad som händer när en sida körs:

Include-filer läses in i koden

Det här händer egentligen innan ASP-motorn startas, det är nämligen funktionen SSI (server side include) som inkluderar filerna, inte ASP.

Det som kan gå fel här är att filerna som ska inkluderas inte finns. Du kommer då antingen att få felmeddelandet HTTP 404 (sidan saknas), eller ett vanligt ASP-felmeddelande, beroende på version av Windows.

global.asa

Ifall webb-platsen inte är startad så startas den, och ett Applikations-objekt skapas. Ifall globala.asa har en Application_OnStart-subrutin så körs den.

Nu kollar servern ifall webbläsaren skickat med ett sessions-id, och ifall det id:t stämmer med något av sessions-objekten som redan finns på servern.

Ifall det inte finns något sessions-objekt för användaren så skapas ett nytt, som får ett nytt sessions-id. Ifall det finns någon Session_OnStart-subrutin i global.asa så körs den nu.

Koden kompileras

Script-motorn går igenom hela koden och ser ifall den går att tyda. Den kollar även att strukturen i koden stämmer, alltså att varje Do har en Loop, att varje Select har en End Select, o.s.v.

Ifall koden inte går att kompilera så får du ett felmeddelande som pekar på den rad där den upptäckte felet, det är dock inte alltid den rad som det verkliga felet är på. Ifall du till exempel har glömt en End If så pekar den inte på den rad där den borde vara (eftersom den inte kan gissa vad du menar med koden), utan på den sista rad där det är möjligt att sätta den, ofta den sista raden i koden.

Alla Dim-satser körs

Alla Dim-satser körs innan resten av koden, oavsett var de står i koden.

Koden körs

Slutligen så startas körningen av själva koden.

Slutsats

Kolla på vad det står i felmeddelandet för att se i vilket steg det blev fel.

Ifall det står "kompileringsfel" så blev det fel under kompileringen. Då ska du leta felet i själva koden. Det beror inte på att någon variabel har fel värde, eller på att det är fel i databasen, eftersom körningen inte har kommit så långt i processen.

Ifall det står "körningsfel" så blev det fel under körningen. Ifall du först får ett "kompileringsfel", ändrar något, och sedan får ett "körningsfel", så fungerade ändringen, eftersom du har kommit ett steg längre i processen.

Göran Andersson