设为主页 | 加入收藏 | 繁體中文

ASP中令人震撼Debug类VBScript

  译者的话:
  不知道用ASP写代码的朋友是不是和我有一样的感受,ASP中最头疼的便是调试步伐的时候不方便,我想可能许多朋友都市用这样的要领“response.write ”,然后输出相干的语句来看看是否正确。前几天写了一个千行的页面,内里大约有七八个SUB/FUNCTION,调试的时候用了有三十几个response.write ,天,调试完后把这三十个一个个删除,累!
  今天看到一个ASP中的Debug类(VBS),试用了一下,绝!
  利用要领很简略:
  test.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) = "

|#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
  %>
  类的阐明:
  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
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: