ASP中的Debug类(VBScript)-ASP技术-3P代码网
繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> ASP基础 >> ASP中的Debug类(VBScript)

ASP中的Debug类(VBScript)

2006-05-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:不知道用ASP写代码的朋友是不是和我有一样的感受,ASP中最头疼的就是调试程序的时候不方便,我想可能很多朋友都会用这样的方法“response.write ”,然后输出相关的语句来看看是否正确。前几天写了一个千行的页面...
关键字:VBScript Debug ASP

不知道用ASP写代码的朋友是不是和我有一样的感受,ASP中最头疼的就是调试程序的时候不方便,我想可能很多朋友都会用这样的方法“response.write ”,然后输出相关的语句来看看是否正确。前几天写了一个千行的页面,里面大概有七八个SUB/FUNCTION,调试的时候用了有三十几个response.write ,天,调试完后把这三十个一个个删除,累!

今天看到一个ASP中的Debug类(VBS),试用了一下,绝!

使用方法很简单:

test.ASP

===================================================

debuggingConsole.ASP

set the default values

Private Sub Class_Initialize()

dbg_RequestTime = Now()

dbg_AllVars = false

Set dbg_Data = Server.CreateObject("Scripting.Dictionary")

DivSets(0) = "

|#title#|

|#data#| ||"

DivSets(1) = "

|#title#|

|#data#| ||"

DivSets(2) = "

|#title#|

|#data#| ||"

dbg_Show_default = "0,0,0,0,0,0,0,0,0,0,0"

End Sub

Public Property Let Enabled(bNewValue) ''[bool] Sets "enabled" to true or false

dbg_Enabled = bNewValue

End Property

Public Property Get Enabled ''[bool] Gets the "enabled" value

Enabled = dbg_Enabled

End Property

Public Property Let Show(bNewValue) ''[string] Sets the debugging panel. Where each digit in the string represents a debug information pane in order (11 of them). 1=open, 0=closed

dbg_Show = bNewValue

End Property

Public Property Get Show ''[string] Gets the debugging panel.

Show = dbg_Show

End Property

Public Property Let AllVars(bNewValue) ''[bool] Sets wheather all variables will be displayed or not. true/false

dbg_AllVars = bNewValue

End Property

Public Property Get AllVars ''[bool] Gets if all variables will be displayed.

AllVars = dbg_AllVars

End Property

'******************************************************************************************************************

''@SDESCRIPTION: Adds a variable to the debug-informations.

''@PARAM: - label [string]: Description of the variable

''@PARAM: - output [variable]: The variable itself

'******************************************************************************************************************

Public Sub Print(label, output)

If dbg_Enabled Then

if err.number > 0 then

call dbg_Data.Add(ValidLabel(label), "!!! Error: " & err.number & " " & err.Description)

err.Clear

else

uniqueID = ValidLabel(label)

response.write uniqueID

call dbg_Data.Add(uniqueID, output)

end if

End If

End Sub

'******************************************************************************************************************

'* ValidLabel

'******************************************************************************************************************

Private Function ValidLabel(byval label)

dim i, lbl

i = 0

lbl = label

do

if not dbg_Data.Exists(lbl) then exit do

i = i + 1

lbl = label & "(" & i & ")"

loop until i = i

ValidLabel = lbl

End Function

'******************************************************************************************************************

'* PrintCookiesInfo

'******************************************************************************************************************

Private Sub PrintCookiesInfo(byval DivSetNo)

dim tbl, cookie, key, tmp

For Each cookie in Request.Cookies

If Not Request.Cookies(cookie).HasKeys Then

tbl = AddRow(tbl, cookie, Request.Cookies(cookie))

Else

For Each key in Request.Cookies(cookie)

tbl = AddRow(tbl, cookie & "(" & key & ")", Request.Cookies(cookie)(key))

Next

End If

Next

tbl = MakeTable(tbl)

if Request.Cookies.count <= 0 then DivSetNo = 2

tmp = replace(replace(replace(DivSets(DivSetNo),"#sectname#","COOKIES"),"#title#","COOKIES"),"#data#",tbl)

Response.Write replace(tmp,"|", vbcrlf)

end sub

'******************************************************************************************************************

'* PrintSummaryInfo

'******************************************************************************************************************

Private Sub PrintSummaryInfo(byval DivSetNo)

dim tmp, tbl

tbl = AddRow(tbl, "Time of Request",dbg_RequestTime)

tbl = AddRow(tbl, "Elapsed Time",DateDiff("s", dbg_RequestTime, dbg_FinishTime) & " seconds")

tbl = AddRow(tbl, "Request Type",Request.ServerVariables("REQUEST_METHOD"))

tbl = AddRow(tbl, "Status Code",Response.Status)

tbl = AddRow(tbl, "Script Engine",ScriptEngine & " " & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "." & ScriptEngineBuildVersion)

tbl = MakeTable(tbl)

tmp = replace(replace(replace(DivSets(DivSetNo),"#sectname#","SUMMARY"),"#title#","SUMMARY INFO"),"#data#",tbl)

Response.Write replace(tmp,"|", vbcrlf)

End Sub

'******************************************************************************************************************

''@SDESCRIPTION: Adds the Database-connection object to the debug-instance. To display Database-information

''@PARAM: - oSQLDB [object]: connection-object

'******************************************************************************************************************

Public Sub GrabDatabaseInfo(byval oSQLDB)

dbg_DB_Data = AddRow(dbg_DB_Data, "ADO Ver",oSQLDB.Version)

dbg_DB_Data = AddRow(dbg_DB_Data, "OLEDB Ver",oSQLDB.Properties("OLE DB Version"))

dbg_DB_Data = AddRow(dbg_DB_Data, "DBMS",oSQLDB.Properties("DBMS Name") & " Ver: " & oSQLDB.Properties("DBMS Version"))

dbg_DB_Data = AddRow(dbg_DB_Data, "Provider",oSQLDB.Properties("Provider Name") & " Ver: " & oSQLDB.Properties("Provider Version"))

End Sub

'******************************************************************************************************************

'* PrintDatabaseInfo

'******************************************************************************************************************

Private Sub PrintDatabaseInfo(byval DivSetNo)

dim tbl

tbl = MakeTable(dbg_DB_Data)

tbl = replace(replace(replace(DivSets(DivSetNo),"#sectname#","DATABASE"),"#title#","DATABASE INFO"),"#data#",tbl)

Response.Write replace(tbl,"|", vbcrlf)

End Sub

'******************************************************************************************************************

'* PrintCollection

'******************************************************************************************************************

Private Sub PrintCollection(Byval Name, ByVal Collection, ByVal DivSetNo, ByVal ExtraInfo)

Dim vItem, tbl, Temp

For Each vItem In Collection

if isobject(Collection(vItem)) and Name "SERVER VARIABLES" and Name "QUERYSTRING" and Name "FORM" then

tbl = AddRow(tbl, vItem, "{object}")

elseif isnull(Collection(vItem)) then

tbl = AddRow(tbl, vItem, "{null}")

elseif isarray(Collection(vItem)) then

tbl = AddRow(tbl, vItem, "{array}")

else

if dbg_AllVars then

tbl = AddRow(tbl, "" & vItem & "", server.HTMLEncode(Collection(vItem)))

elseif (Name = "SERVER VARIABLES" and vItem "ALL_HTTP" and vItem "ALL_RAW") or Name "SERVER VARIABLES" then

if Collection(vItem) "" then

tbl = AddRow(tbl, vItem, server.HTMLEncode(Collection(vItem))) ' & " {" & TypeName(Collection(vItem)) & "}")

else

tbl = AddRow(tbl, vItem, "...")

end if

end if

end if

Next

if ExtraInfo "" then tbl = tbl & "" & ExtraInfo

tbl = MakeTable(tbl)

if Collection.count <= 0 then DivSetNo =2

tbl = replace(replace(DivSets(DivSetNo),"#title#",Name),"#data#",tbl)

tbl = replace(tbl,"#sectname#",replace(Name," ",""))

Response.Write replace(tbl,"|", vbcrlf)

End Sub

'******************************************************************************************************************

'* AddRow

'******************************************************************************************************************

Private Function AddRow(byval t, byval var, byval val)

t = t & "|||" & var & "|= " & val & "|"

AddRow = t

End Function

'******************************************************************************************************************

'* MakeTable

'******************************************************************************************************************

Private Function MakeTable(byval tdata)

tdata = "|

" + tdata + "

|"

MakeTable = tdata

End Function

'******************************************************************************************************************

''@SDESCRIPTION: Draws the Debug-panel

'******************************************************************************************************************

Public Sub draw()

If dbg_Enabled Then

dbg_FinishTime = Now()

Dim DivSet, x

DivSet = split(dbg_Show_default,",")

dbg_Show = split(dbg_Show,",")

For x = 0 to ubound(dbg_Show)

divSet(x) = dbg_Show(x)

Next

Response.Write "

Debugging-console:"

Call PrintSummaryInfo(divSet(0))

Call PrintCollection("VARIABLES", dbg_Data,divSet(1),"")

Call PrintCollection("QUERYSTRING", Request.QueryString(), divSet(2),"")

Call PrintCollection("FORM", Request.Form(),divSet(3),"")

Call PrintCookiesInfo(divSet(4))

Call PrintCollection("SESSION", Session.Contents(),divSet(5),AddRow(AddRow(AddRow("","Locale ID",Session.LCID & " (&H" & Hex(Session.LCID) & ")"),"Code Page",Session.CodePage),"Session ID",Session.SessionID))

Call PrintCollection("APPLICATION", Application.Contents(),divSet(6),"")

Call PrintCollection("SERVER VARIABLES", Request.ServerVariables(),divSet(7),AddRow("","Timeout",Server.ScriptTimeout))

Call PrintDatabaseInfo(divSet(8))

Call PrintCollection("SESSION STATIC OBJECTS", Session.StaticObjects(),divSet(9),"")

Call PrintCollection("APPLICATION STATIC OBJECTS", Application.StaticObjects(),divSet(10),"")

Response.Write "

"

End If

End Sub

'Destructor

Private Sub Class_Terminate()

Set dbg_Data = Nothing

End Sub

End Class

%>

责任编辑:admin
相关文章