NOTESSIDAN

Allt om Lotus Notes & Domino




Behövs verkligen scriptdebuggern ?
Jag förstår inte vad man ska ha scriptdebuggern till i Notes, (eller jo det förstår jag, men inte varför man ska använda den). Jag har kodat Lotusscript i 10 år och varit involverad i stora och komplexa Notes/Domino applikationer med massor av LS scriptbibliotek, men jag har i stort sätt aldrig använt mig av scriptdebuggern för att felsöka script eller för att få reda ett objekt eller en variabel.

När jag kodar så vill jag ofta att det ska gå snabbt och det kanske är därför som jag valt att göra på mitt eget sätt. Jag minns att jag ofta blev irriterad på hur scriptdebuggern fungerade, först ska man slå på den, sen ska man hitta sina objekt, för att till slut hitta värdena man är ute efter, sen får man inte glömma att slå av debuggern också.

Mitt sätta att koda Lotusscript i Lotus Notes är väldigt enkelt, det fungerar alltid och jag hittar alltid felen direkt.

Det är naturligtvis inte "rocket science" och ni har antagligen alla gjort det några gånger själva. Det första man måste ha är en errorhantering, använd alltid följande rader som ett skelett i din kod.
On error goto e här skriver du din kod... Exit sub/function e: print "Subnamn " & error,erl

Genom att använda detta skelett så kommer du alltid veta vid fel vilken rad som felar eftersom erl alltid returnerar radnummret i statusraden i Notesklienten. (om det är en webagent så kommer felmeddelandet och raden skrivas ut i webläsarfönstret). Genom att alltid skriva sub:en eller funktionens namn i felhanteringen så kommer man också alltid att veta i vilken sub resp funktion felet blev och på vilken rad.

I vissa fall så kanske man vill vet vilket värde en variabel eller objekt har även om inget går fel. då är det lättast att använda sig av printsatser eller kolla om objektet är någonting, tex så här:
Print myArray(0) Print doc.Company(0) Print Company if doc is nothing then print "Doc is nothing"
Sen krävs det lite erfarenhet för att kunna tyda felmeddelanden som kommer, och det är nåt man lär sig med tiden. Här är några av dom vanligaste felmeddelanden man stöter på.

Object variabel not set = Objektet är inte initierat
Type Missmatch - Variabeln eller objektet är av fel typ
Variant does not contain a container - variabeln eller objektet är inte en array

Fråga : Hur debuggar man en WebQueryOpen Agent då ?
Svar : Precis som ovan fast man tittar i log.nsf eller på konsolen efter printsatserna

Summering:
Denna artikel handlar om att använda errorhantering och printsatser istället för att leta ihjäl sig i scriptdebuggern. när man väl lärt sig denna teknik och gör det med automatik så kodar man snabbare och felsökningen går som en dans.



Relevanta Poster på Notessidan:



Publicerad 2006-02-23 | Kommentarer: 5 | Läsningar: 1973
Kommentarer

Rickard ( 2006-02-23 23:16:41 )
Håller med! Debuggern kan vara tidskrävande och jobbig att använda. Trots det sitter man och svär över den ibland... :-) Ser en liten förbättring man kan göra i din föreslagna error-hantering som jag själv nyligen upptäckte. Man kan nyttja funktionen Getthreadinfo för att få namnet på innevarande rutin/sub/funktion. Raden: Print "Subnamn " & error,erl Kan ersättas med: Print Getthreadinfo(1) & error,erl för att göra den mer universell. Snygg sida för övrigt!!
Thomas ( 2006-02-24 09:16:29 ) Websida
Tack Rickard, jag ska testa denna.
Mats ( 2006-02-24 13:20:13 )
Getthreadinfo verkar ju kanonbra! Den funktionen har jag saknat länge. Däremot tycker jag debuggern har en viktig funktion att fylla och använder den ofta, men den borde kunna göras lite bättre. Om man jämför med debuggern i VB så är den ju helt kass. Så grymt svårt att hitta en variabel och visa innehållet i den. I dokument med många fält kan man ju inte ens se alla fält...
Andrei Kouvchinnikov ( 2006-03-12 02:02:59 ) Websida
Efter att jag ha printat ut errorraden och errorkoden, hur hittar jag orsaken till felet "Object variabel not set"? Typ: doc1.getfirstitem("item").text+view.name+doc2.subject(0)+db2.title. Jag ser ju inte vilken objekt det är fel på och i vilket skede objeketet inte kunde initieras. Då är det bara att starta den gamla trogna debuggern.
Thomas ( 2006-03-12 09:41:36 ) Websida
Hej Andrei, visst kan man hävda att man behöver scriptdebuggern i vissa lägen. men om man vant sig vid att inte använda den så väljer man att inte koda som du gjort eller också skriver man till några rader för att kontrollera vilket objekt som är fel. Jag vill hävda att det går snabbare att skriva 4 printsatser än att hitta felet i debuggern. Om man gillar debuggerna så tycker jag man ska fortsätta använda den, men den behövs inte.



Sök på Notessidan
Thomas Adrian
ThomasCertifierad utvecklare och administratör inom Notes & Domino

Kontakta mig







Senaste Sökningarna på Notessidan
Sön - sharepoint (R:1)
Sön - räkna and antal and besökare (R:0)
Sön - browser (R:17)
Sön - stoppar and mail (R:1)
Sön - korrupt (R:3)
Sön - böcker (R:0)
Sön - kalendern (R:12)
Sön - feature (R:15)
Sön - print and mime (R:2)
Sön - länka (R:0)
Sön - databasen (R:94)
Sön - access (R:47)
Sön - outlook (R:15)
Sön - webanvändare (R:0)
Sön - google and maps (R:6)
Sön - juffe (R:2)
Sön - uidoc.print (R:1)
Sön - java and lotusscript (R:26)
Sön - besök (R:0)




Databasstatistik Blogg
Uppdateras var 15:e Minut

Antal Poster:562
Antal Kommentarer: 1380
Alla sidvisningar idag:
Unika Besökare idag:
Databasstorlek: 180,5Mb
Fixup: 2019-07-17 00:31:15
FT:2019-07-17 19:11:24
DB Procent använd: 99,8
Antal Agenter: 42
Antal Formulär: 65
Antal Vyer: 60
Antal Dokument: 7931
Antal Image Resources: 108
Antal Subformulär: 18
Antal Scriptbibliotek: 11
Totalt Antal Designelement: 576
Antal Attachments: 159
Antal Konflikter: 0
Server version 1: 405
Server version 2: Release 9.0.1FP9|August 14, 2017
Server Plattform: Windows/64
Ändrad: 2019-07-17 20:44:26
Server Tidszon: Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=131$ZN=W. Europe
Region:
Kommentarsspam Idag: 10
Kommentarsspam Totalt: 17913


BlogRankers.com

Top Sites at iWEBTOOL.com

Fight Spam! Click Here!

Bloggtoppen.se

Listed on BlogShares

Increase website traffic

Top Internet Blogs

Site Checker