Hallo!

Ich hab mir noch ein paar Gedanken zum Debugging in ASP gemacht und
dabei das Fehlerscript 500-100.asp (im Verzeichnis
\WINNT\Help\iisHelp\common\) und die MSDN durchforstet.

Bei einem ASP-Fehler wird immer dieses Fehlerscript aufgerufen. Vor der
Ausgabe wird das ASPError-Objekt mit der Fehlerbeschreibung erzeugt.

Jetzt kann man das Fehlerscript 500-100.asp erweitern:

1. Collections

PrintCollection "Querystring",           Request.QueryString()
PrintCollection "Form",                  Request.Form()
PrintCollection "Cookies",               Request.Cookies()
PrintCollection "Session Variables",     Session.Contents()
PrintCollection "Application Variables", Application.Contents()
PrintCollection "Server Variables",      Request.ServerVariables()
PrintCollection "Session Objects",       Session.StaticObjects()
PrintCollection "Application Objects",   Application.StaticObjects()

private sub PrintCollection(byval pTitle, byref pCollection)
   dim itm
   on error resume next
   Response.Write("<br><br><b>" & pTitle & "</b>")
   for each itm in pCollection
      if isobject(itm) then
         Response.Write("<br>Object Reference: " & itm)
      elseif isarray(pCollection(itm)) then
         Response.Write("<br>Array Reference: " & itm)
         PrintArray pCollection(itm)
      else
         Response.Write("<br>" & itm & " = " & pCollection(itm))
      end if
   next
   Response.Flush
end sub

private sub PrintArray(byval pArray)
   dim i, j
   for i = 0 to ubound(pArray)
      if isarray(pArray(i)) then
         Response.Write("<br>(" & i & ") = Sub-Array")
         PrintArray pArray(i)
      else
         Response.Write("<br>(" & i & ") = " & pArray(i))
      end if
   next
end sub

Jetzt werden Form-Variablen und Querystring im Klartext ausgegeben und
zus�tzlich auch Cookies, Server-, Application- und Session-Variablen und
Objekte.

Das Script unterst�tzt keine mehrdimensionalen Arrays (als Session- oder
Application-Variablen), wohl aber die von mir so geliebten Arrays von
Arrays.

Das ist zwar noch kein Debugging, aber man hat im Fehlerfall mehr
Informationen und ist besser als kein Debugging. ;-)

2. Debug-Objekt

Zus�tzlich kann man ein Debug-Objekt schreiben, das laufend Werte in
eine Textdatei oder in eine Datenbanktabelle schreibt. Das Klassenscript
wird dann inkludiert. Es erzeugt automatisch eine Instanz des
Debug-Objects.

�ber "Debug.Print Label, Variable" werden Kommentare und Variablen
ausgegeben (so wie bei VB hier aber in die Textdatei) und mit
"Debug.Show" wird die Datei angezeigt.

Dieses Debug-Objekt kann vielf�ltig eingesetzt werden. Zum einen kann
man die Textdatei ebenfalls in der 500-100.asp ausgeben, so dass die
Daten nur im Fehlerfall erscheinen. Man kann aber auch grunds�tzlich am
Ende des Scripts "Debug.Show" aufrufen.

Jetzt fehlen zum vollst�ndigen Debugging noch Breakpoints,
Einzelschrittausf�hrung und Variablen�nderungen. Aber in ASP kann ich
darauf verzichten.

Freundliche Gr��e
Joachim van de Bruck





| [aspgerman] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp

Antwort per Email an