Debugging i Visual Studio

Nogle gange er debugging sjovt, andre gange er det ikke. Her er et eksempel som heldigvis til sidst endte med at være i den første kategori.

Jeg sidder til daglig med en sitecorebaseret løsning, som bruger staging – publicering fra en content management server til en content delivery server.

I forbindelse med nogle større ændringer i sitet (alt fra indhold, til layouts, til templates var ændret i større eller mindre grad) skulle jeg sætte en ny version af content delivery sitet op. Det har vi gjort adskillige gange før uden problemer, men denne gang stødte jeg på et problem. Selv om sitet virkede fint på content management serveren, så startede det op og lukkede ned, så snart jeg besøgte en side på content delivery serveren. Ofte hvor sitets application pool blev stoppet.

Når sitet på content delivery serveren kørte op imod content management serverens database var der ingen problemer, så det tydede på et problem et sted i databasen, men hvor kunne jeg ikke lige gennemskue.

I serverens event log fandt jeg følgende fejl:

Faulting application i event viewer

De fleste blogindlæg jeg fandt på nettet om denne type problem beskrev debugging af et memory dump – ikke lige hvad jeg havde tænkt mig at skulle i gang med.

I stedet satte jeg Visual Studio til at debugge op imod content-delivery serverens database og var så heldig at ramme et stack overflow exception og endda også den linie, der forudsagede denne exception.

På linien satte jeg et breakpoint op, og satte følgende specifikation på breakpointet. Det blev nemlig ramt adskillige gange (flere tusinde faktisk) før stack overflow exception’en kom.

Debugging dialog i Visual Studio ved breakpoints

Nu kunne jeg få en callstack og hvilket item der var skyld i problemet.

Output af debugging

Som man kan se var det et item kaldet Presse og politik, der var problemet. En content-ansvarlig havde rettet i strukturen under dette item, så der var kommet en reference fra dette item til det selv i stedet for et sub-item, og derved opstod stack overflow exceptionen.

(Faktisk havde den content-ansvarlige rettet feltet, der gav stack overflow exceptionen, men af en eller anden grund havde sitecore ikke publiceret denne rettelse, på trods af at vi havde publiceret alle items i en publish everything publicering).

 

Leave a Reply

Your email address will not be published. Required fields are marked *