• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp:debug类调试程序
    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
    您可能感兴趣的文章:
    • Java关于远程调试程序教程(以Eclipse为例)
    • C#中利用断点操作调试程序的步骤详解
    • IOS 使用NSAssert()和NSParameterAssert调试程序
    • Python中使用PDB库调试程序
    • ubuntu用wifi连接android调试程序的步骤
    • Android开发笔记之:一分钟学会使用Logcat调试程序的详解
    • asp下调试程序的debug类
    • 用bat实现删除系统脚本调试程序
    • Linux应用程序使用写文件调试程序的方法
    上一篇:javascript asp教程第二课--转义字符
    下一篇:如何增加Referer功能--反向链接插件
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp:debug类调试程序 asp,debug,类,调试,程序,asp,