服务器之家

服务器之家 > 正文

ASP里面令人震撼地Debug类(VBScript)

时间:2019-10-14 11:28     来源/作者:asp技术网

我想可能很多朋友都会用这样的方法“response.write ”,然后输出相关的语句来看看是否正确。前几天写了一个千行的页面,里面大概有七八个SUB/FUNCTION,调试的时候用了有三十几个response.write ,天,调试完后把这三十个一个个删除,累! 
今天看到一个ASP中的Debug类(VBS),试用了一下,绝! 
使用方法很简单: 
test.asp 

复制代码代码如下:

<!--#INCLUDE FILE="debuggingConsole.asp"--> 
<% 
output="XXXX" 
Set debugstr = New debuggingConsole 
debugstr.Enabled = true 
   debugstr.Print "参数output的值", output 
   '…… 
   debugstr.draw 
Set debugstr = Nothing 
%> 


=================================================== 
debuggingConsole.asp 

复制代码代码如下:

<% 
Class debuggingConsole 
   private dbg_Enabled 
   private dbg_Show 
   private dbg_RequestTime 
   private dbg_FinishTime 
   private dbg_Data 
   private dbg_DB_Data 
   private dbg_AllVars 
   private dbg_Show_default 
   private DivSets(2) 
'Construktor => set the default values 
Private Sub Class_Initialize() 
   dbg_RequestTime = Now() 
   dbg_AllVars = false 
   Set dbg_Data = Server.CreateObject("Scripting.Dictionary") 
DivSets(0) = "<TR><TD style='cursor:hand;' onclick=""javascript:if (document.getElementById('data#sectname#').style.display=='none'){document.getElementById('data#sectname#').style.display='block';}else{document.getElementById('data#sectname#').style.display='none';}""><DIV id=sect#sectname# style=""font-weight:bold;cursor:hand;background:#7EA5D7;color:white;padding-left:4;padding-right:4;padding-bottom:2;"">|#title#| <DIV id=data#sectname# style=""cursor:text;display:none;background:#FFFFFF;padding-left:8;"" onclick=""window.event.cancelBubble = true;"">|#data#| </DIV>|</DIV>|" 
   DivSets(1) = "<TR><TD><DIV id=sect#sectname# style=""font-weight:bold;cursor:hand;background:#7EA5D7;color:white;padding-left:4;padding-right:4;padding-bottom:2;"" onclick=""javascript:if (document.getElementById('data#sectname#').style.display=='none'){document.getElementById('data#sectname#').style.display='block';}else{document.getElementById('data#sectname#').style.display='none';}"">|#title#| <DIV id=data#sectname# style=""cursor:text;display:block;background:#FFFFFF;padding-left:8;"" onclick=""window.event.cancelBubble = true;"">|#data#| </DIV>|</DIV>|" 
   DivSets(2) = "<TR><TD><DIV id=sect#sectname# style=""background:#7EA5D7;color:lightsteelblue;padding-left:4;padding-right:4;padding-bottom:2;"">|#title#| <DIV id=data#sectname# style=""display:none;background:lightsteelblue;padding-left:8"">|#data#| </DIV>|</DIV>|" 
   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, "<nobr>" & vItem & "</nobr>", 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 & "<TR><TD COLSPAN=2><HR></TR>" & 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 & "|<TR valign=top>|<TD>|" & var & "|<TD>= " & val & "|</TR>" 
   AddRow = t 
End Function 
'*********************************************************** 
'* MakeTable 
'*********************************************************** 
Private Function MakeTable(byval tdata) 
   tdata = "|<table border=0 style=""font-size:10pt;font-weight:normal;"">" + tdata + "</Table>|" 
   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 "<BR><Table width=100% cellspacing=0 border=0 style=""font-family:arial;font-size:9pt;font-weight:normal;""><TR><TD><DIV style=""background:#005A9E;color:white;padding:4;font-size:12pt;font-weight:bold;"">Debugging-console:</DIV>" 
   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 "</Table>" 
   End If 
End Sub 
'Destructor 
Private Sub Class_Terminate() 
   Set dbg_Data = Nothing 
End Sub 
End Class 
%> 


类的说明: 

CLASS debuggingConsole 
Version: 1.2 
-------------------------------------------------------------------------------- 
Public Properties 
Property Let Enabled(bNewValue)===[bool] Sets "enabled" to true or false 
Property Get Enabled===[bool] Gets the "enabled" value 
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 
Property Get Show===[string] Gets the debugging panel. 
Property Let AllVars(bNewValue)===[bool] Sets wheather all variables will be displayed or not. true/false 
Property Get AllVars===[bool] Gets if all variables will be displayed. 
-------------------------------------------------------------------------------- 
Public Methods 
public sub===Print (label, output) 
   Adds a variable to the debug-informations. 
public sub===GrabDatabaseInfo (byval oSQLDB) 
   Adds the Database-connection object to the debug-instance. To display Database-information 
public sub===draw () 
   Draws the Debug-panel 
-------------------------------------------------------------------------------- 
Methods Detail 
public sub===Print (label, output) 
Parameters: 
   - label [string]: Description of the variable 
   - output [variable]: The variable itself 
public sub===GrabDatabaseInfo (byval oSQLDB) 
Parameters: 
   - oSQLDB [object]: connection-object

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部

299
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40