Debugging i Visual Studio

Tags:    .net
Skrevet af Bruger #2730 @ 18.02.2009

Locals


Locals vinduet, ligesom immediate vinduet er kun aktivt når der er et aktivt breakpoint. Det viser de variable der er i det lokale scope samt deres værdi. Personligt bruger jeg det ikke så meget, jeg holder mig til at flytte min cursor over den variabel jeg vil se værdien på (så bliver den vist)



Som vist på ovenstående billede er det muligt at benytte både cursoren til at få informationer omkring de variable man har i spil i det scope hvor man nu engang har sit breakpoint. Den blå pil indikerer min cursor der er placeret over variablen "skoda" af typen "Bil". I første linie i det der folder ud kan vi se hvor klassen hører hjemme henne {DebugSample.Bil} er mit namespace og mit klassenavn. Jeg folder den ud og kan nu se alle properties, dette kan verificeres ved at kigge på selve klassen nedenunder mit breakpoint.

Ved den grønne pil viser jeg de samme informationer ved at bruge "Locals" vinduet, fordelen ved Locals vinduet frem for at bruge min cursor er at hvis jeg stepper (se det senere afsnit for forklaring) så skal flytte min cursor for at få det opdateret, mens "Locals" vinduet reflekterer ændringen med det samme. Som vi kan se i den første linie i "Locals" vinduet står der de samme informationer som ved vores cursor, nemlig namespace og klassenavn. Dette er rent faktisk klassens nedarvede "ToString()" metode der er blevet kaldt, så hvis vi vil have noget andet til at stå der kan vi blot overstyrre denne metode.



Den blå pil viser hvor vi overstyrer vores "ToString()" metode, og den grønne pil viser resultatet. Dette virker i et simpelt eksempel, men der findes en mere elegant løsning til dette. Bemærk venligst at dette er var selv noget jeg fandt ud af ved fra en artikel på http://www.dotninjas.dk i artiklen: http://www.dotninjas.dk/post/DebuggerDisplay-mfl.aspx omkring dette. Løsningen er at benytte klasse attributter til at løse det med. I stedet for at overstyrre vores "ToString()" metode kan vi "beskrive" med attributter hvordan klassen "Bil" skal vises i en debugger. Dette gøres med følgende kode:



Den grønne pil viser vores attribut, som gør det muligt for os at se ændringen i vores debug vinduer, og ved at holde cursoren hen over variablen. Bemærk at for at kunne benytte attributten, skal man bruge "System.Diagnostics" namespacet.


Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (6)

User
Bruger #714 @ 18.02.09 11:36
Lækker artikel om et meget undervurderet emne (og noget jeg egentlig aldrig har fundet en artikel omkring), dog rigtig rigtig brugbart!
User
Bruger #5789 @ 23.02.09 21:02
Æv, nu kommmer der ikke flere lette .net sprog baserede spørgmål længere :)
User
Bruger #5789 @ 23.02.09 21:03
... og keep em comming.
User
Bruger #13669 @ 08.03.09 12:59
Argh, kan ikke læse det først, login boksen er hende over det!
User
Bruger #13669 @ 08.03.09 13:02
Så er det godt der er noget der hedder "vis kilde" :D
User
Bruger #8985 @ 07.06.11 01:14
Er det bare mig (eller rettere, Opera) eller bliver dele af billederne i denne artikel dækket af karmabarometret?
Du skal være logget ind for at skrive en kommentar.
t