如何将 "debug msg" 写入控制台或旧网站?
How can I write a "debug msg" to the console or elsewise in an old web site?
我正在为使用 VBScript 的旧网站("old",如 "olde";如 Rip-van-Winkle olde)添加一些功能。
我的问题的结果是某些逻辑似乎总是等同于一个结果(IsNewBusiness 显然总是被赋予一个 FALSE 值),而它有时应该等同于相反的逻辑是:
IsNewBusiness = TRUE 'default (if record not found)
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0
End If
所以,由于逻辑总是等同于 false,我不得不假设这一行:
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0
...正在达到,adoRS.Fields.Item(0)。值始终为 0
正如您在上面的代码中看到的,IsNewBusiness 布尔值一开始设置为 TRUE,但永远不会保持为真,尽管在某些情况下它应该(重置)为 TRUE(查询结果应该,给定某些参数,return 值为“-1”而不是 0)。
这个问题与我问的一个问题有关,但实际上是分开的 :
所以,为了达到问题的症结所在,我想通过写出 "debug msg" 到控制台或类似的东西。
根据本网站的遗留代码,我尝试与 javascript 合作以达到这些目的:
ReturnMsg = "Made it to IsNewBusiness logic"
Response.Write("<script type=""text/javascript"">" & vbCrLf)
Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
Response.Write("</script>" & vbCrLf)
...但它似乎不起作用 - 我从未看到该消息。
我也试过这个:
Response.Write("window.alert(ReturnMsg);")
...还有这个:
Response.Write("console.log(ReturnMsg);")
...结果没有差异。我在控制台中看到的是:
如何使用 VBScript 或 javascript 或其他任何方式完成 "alert" 或控制台日志消息等?
更新
我什至尝试了一些内联 javascript,像这样:
adoRS.Close()
<script language="javascript">
window.alert("Made it past the IsNewBusiness logic");
</script>
...但是它爆炸了...
更新 2
我试过Kul-Tigin提到的技巧,但它似乎对我不起作用。
我更改了这段代码:
currentYear = Year(Now)
SQLString = "Select NewBiz from MasterUnitsprojSales where CYear = " & currentYear & " and Unit = '" & Unit & "'"
adoRS.Open(SQLString, adoCon)
IsNewBusiness = TRUE 'default (if record not found)
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
End If
adoRS.Close()
...为此:
currentYear = Year(Now)
SQLString = "Select NewBiz from MasterUnitsprojSales where CYear = " & currentYear & " and Unit = '" & Unit & "'"
adoRS.Open(SQLString, adoCon)
IsNewBusiness = TRUE 'default (if record not found)
ReturnMsg = "Before the If Not adoRS.EOF block"
Response.Write("<script type=""text/javascript"">" & vbCrLf)
Response.Write("<!--" & vbCrLf)
Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
Response.Write("-->" & vbCrLf)
Response.Write("</script>" & vbCrLf)
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
ReturnMsg = "Entered the If Not adoRS.EOF block"
Response.Write("<script type=""text/javascript"">" & vbCrLf)
Response.Write("<!--" & vbCrLf)
Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
Response.Write("-->" & vbCrLf)
Response.Write("</script>" & vbCrLf)
End If
adoRS.Close()
...运行 访问该页面的站点,选择查看源代码,搜索 "the If Not adoRS.EOF block",但没有匹配项。我做错了吗?
更新 3
我也试过了(上面是基于页面中现有的代码,下面是基于评论者的代码片段):
Response.Write("<!-- Before the If Not adoRS.EOF block -->")
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
Response.Write("<!-- After the If Not adoRS.EOF block -->")
End If
更新 4
我能够获得我添加并显示在“查看源代码”中的调试信息的唯一方法是插入一些引发错误的 javascript。添加此 javascript:
<script language="javascript">
window.alert("Before the If Not adoRS.EOF block js");
</script>
在某些情况下:
Response.Write("<!-- Before the If Not adoRS.EOF block -->")
<script language="javascript">
window.alert("Before the If Not adoRS.EOF block js");
</script>
If Not adoRS.EOF Then
...导致此内容出现在页面上:
Server Error in '/EMS/customerreportingnet' Application.
--------------------------------------------------------------------------------
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: BC30636: '>' expected.
Source Error:
Line 129: IsNewBusiness = TRUE 'default (if record not found)
Line 130: Response.Write("<!-- Before the If Not adoRS.EOF block -->")
Line 131: <script language="javascript">
Line 132: window.alert("Before the If Not adoRS.EOF block js");
Line 133: </script>
Source File: C:\EnhancedMonthlySalesReporting\customerreportingnet\customerreportingnet\pages\custmaint_entry.aspx Line: 131
...在查看源代码中:
Line 129: IsNewBusiness = TRUE 'default (if record not found)
Line 130: Response.Write("<!-- Before the If Not adoRS.EOF block -->")
<font color=red>Line 131: <script language="javascript">
</font>Line 132: window.alert("Before the If Not adoRS.EOF block js");
Line 133: </script></pre></code>
...看来我还在利维坦出没的水域逆流而上
让我们调试一下。必须满足以下三种情况之一:
- 代码为运行,输入
If
,设置IsNewBusiness
为真
- 密码为运行,输入
If
,设置IsNewBusiness
为false。
- 密码为运行,不输入
If
。因此,IsNewBusiness
必须设置为true。
- 代码从一开始就不是 运行。
IsNewBusiness
具有未知值。
稍微思考一下就会让您相信这些案例是详尽无遗的:其中之一必须是正在发生的事情。
那么,您的工作就是弄清楚这四种情况中的哪一种是实际发生的。理想情况下,您可以使用调试器附加到该站点(您是否使用了 Visual Studio 的 "Attach to Process" 选项?)并在代码中设置断点,然后查看哪些断点被命中,哪些没有被命中。
但是假设您出于某种原因不能使用调试器。因此,如果是我,我会用 Response.Write()
或 Trace()
调用来注释代码以发出输出,正如评论中的几个人所建议的那样,以指示尽可能多的可能性。由于 Response.Write()
是关于代码 运行(您看到或不看到它的输出)的死胡同,这是一个不错的选择。案例 1 和案例 2 合并为一个案例(现在,您可能只关心计算机是否进入 If
,而不关心计算机进入之后里面的代码做了什么)。
所以我临时注释代码如下:
IsNewBusiness = TRUE 'default (if record not found)
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0
Response.Write("<h1>INSIDE IF</h1>")
Else
Response.Write("<h1>INSIDE ELSE</h1>")
End If
(简而言之:调试时,您可以安全地修改页面本身的内容以回答问题,只要您稍后清理您的修改!)
这样您就可以在加载页面时回答上述情况:
- 如果你看到 "INSIDE IF" 的粗体字,你就知道计算机进入了
If
语句,并且 adoRS.EOF
一定是假的。
- 如果您看到 "INSIDE ELSE" 的粗体字,您就知道计算机 没有 进入
If
语句,并且 adoRS.EOF
必须为真。
- 如果两者都看不到,则计算机根本就没有达到此代码,您的问题出在其他地方。
我正在为使用 VBScript 的旧网站("old",如 "olde";如 Rip-van-Winkle olde)添加一些功能。
我的问题的结果是某些逻辑似乎总是等同于一个结果(IsNewBusiness 显然总是被赋予一个 FALSE 值),而它有时应该等同于相反的逻辑是:
IsNewBusiness = TRUE 'default (if record not found)
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0
End If
所以,由于逻辑总是等同于 false,我不得不假设这一行:
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0
...正在达到,adoRS.Fields.Item(0)。值始终为 0
正如您在上面的代码中看到的,IsNewBusiness 布尔值一开始设置为 TRUE,但永远不会保持为真,尽管在某些情况下它应该(重置)为 TRUE(查询结果应该,给定某些参数,return 值为“-1”而不是 0)。
这个问题与我问的一个问题有关,但实际上是分开的
所以,为了达到问题的症结所在,我想通过写出 "debug msg" 到控制台或类似的东西。
根据本网站的遗留代码,我尝试与 javascript 合作以达到这些目的:
ReturnMsg = "Made it to IsNewBusiness logic"
Response.Write("<script type=""text/javascript"">" & vbCrLf)
Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
Response.Write("</script>" & vbCrLf)
...但它似乎不起作用 - 我从未看到该消息。
我也试过这个:
Response.Write("window.alert(ReturnMsg);")
...还有这个:
Response.Write("console.log(ReturnMsg);")
...结果没有差异。我在控制台中看到的是:
如何使用 VBScript 或 javascript 或其他任何方式完成 "alert" 或控制台日志消息等?
更新
我什至尝试了一些内联 javascript,像这样:
adoRS.Close()
<script language="javascript">
window.alert("Made it past the IsNewBusiness logic");
</script>
...但是它爆炸了...
更新 2
我试过Kul-Tigin提到的技巧,但它似乎对我不起作用。
我更改了这段代码:
currentYear = Year(Now)
SQLString = "Select NewBiz from MasterUnitsprojSales where CYear = " & currentYear & " and Unit = '" & Unit & "'"
adoRS.Open(SQLString, adoCon)
IsNewBusiness = TRUE 'default (if record not found)
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
End If
adoRS.Close()
...为此:
currentYear = Year(Now)
SQLString = "Select NewBiz from MasterUnitsprojSales where CYear = " & currentYear & " and Unit = '" & Unit & "'"
adoRS.Open(SQLString, adoCon)
IsNewBusiness = TRUE 'default (if record not found)
ReturnMsg = "Before the If Not adoRS.EOF block"
Response.Write("<script type=""text/javascript"">" & vbCrLf)
Response.Write("<!--" & vbCrLf)
Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
Response.Write("-->" & vbCrLf)
Response.Write("</script>" & vbCrLf)
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
ReturnMsg = "Entered the If Not adoRS.EOF block"
Response.Write("<script type=""text/javascript"">" & vbCrLf)
Response.Write("<!--" & vbCrLf)
Response.Write("alert ('" & ReturnMsg & "');" & vbCrLf)
Response.Write("-->" & vbCrLf)
Response.Write("</script>" & vbCrLf)
End If
adoRS.Close()
...运行 访问该页面的站点,选择查看源代码,搜索 "the If Not adoRS.EOF block",但没有匹配项。我做错了吗?
更新 3
我也试过了(上面是基于页面中现有的代码,下面是基于评论者的代码片段):
Response.Write("<!-- Before the If Not adoRS.EOF block -->")
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0 'Is this ever reached?
Response.Write("<!-- After the If Not adoRS.EOF block -->")
End If
更新 4
我能够获得我添加并显示在“查看源代码”中的调试信息的唯一方法是插入一些引发错误的 javascript。添加此 javascript:
<script language="javascript">
window.alert("Before the If Not adoRS.EOF block js");
</script>
在某些情况下:
Response.Write("<!-- Before the If Not adoRS.EOF block -->")
<script language="javascript">
window.alert("Before the If Not adoRS.EOF block js");
</script>
If Not adoRS.EOF Then
...导致此内容出现在页面上:
Server Error in '/EMS/customerreportingnet' Application.
--------------------------------------------------------------------------------
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: BC30636: '>' expected.
Source Error:
Line 129: IsNewBusiness = TRUE 'default (if record not found)
Line 130: Response.Write("<!-- Before the If Not adoRS.EOF block -->")
Line 131: <script language="javascript">
Line 132: window.alert("Before the If Not adoRS.EOF block js");
Line 133: </script>
Source File: C:\EnhancedMonthlySalesReporting\customerreportingnet\customerreportingnet\pages\custmaint_entry.aspx Line: 131
...在查看源代码中:
Line 129: IsNewBusiness = TRUE 'default (if record not found)
Line 130: Response.Write("<!-- Before the If Not adoRS.EOF block -->")
<font color=red>Line 131: <script language="javascript">
</font>Line 132: window.alert("Before the If Not adoRS.EOF block js");
Line 133: </script></pre></code>
...看来我还在利维坦出没的水域逆流而上
让我们调试一下。必须满足以下三种情况之一:
- 代码为运行,输入
If
,设置IsNewBusiness
为真 - 密码为运行,输入
If
,设置IsNewBusiness
为false。 - 密码为运行,不输入
If
。因此,IsNewBusiness
必须设置为true。 - 代码从一开始就不是 运行。
IsNewBusiness
具有未知值。
稍微思考一下就会让您相信这些案例是详尽无遗的:其中之一必须是正在发生的事情。
那么,您的工作就是弄清楚这四种情况中的哪一种是实际发生的。理想情况下,您可以使用调试器附加到该站点(您是否使用了 Visual Studio 的 "Attach to Process" 选项?)并在代码中设置断点,然后查看哪些断点被命中,哪些没有被命中。
但是假设您出于某种原因不能使用调试器。因此,如果是我,我会用 Response.Write()
或 Trace()
调用来注释代码以发出输出,正如评论中的几个人所建议的那样,以指示尽可能多的可能性。由于 Response.Write()
是关于代码 运行(您看到或不看到它的输出)的死胡同,这是一个不错的选择。案例 1 和案例 2 合并为一个案例(现在,您可能只关心计算机是否进入 If
,而不关心计算机进入之后里面的代码做了什么)。
所以我临时注释代码如下:
IsNewBusiness = TRUE 'default (if record not found)
If Not adoRS.EOF Then
IsNewBusiness = adoRS.Fields.Item(0).Value <> 0
Response.Write("<h1>INSIDE IF</h1>")
Else
Response.Write("<h1>INSIDE ELSE</h1>")
End If
(简而言之:调试时,您可以安全地修改页面本身的内容以回答问题,只要您稍后清理您的修改!)
这样您就可以在加载页面时回答上述情况:
- 如果你看到 "INSIDE IF" 的粗体字,你就知道计算机进入了
If
语句,并且adoRS.EOF
一定是假的。 - 如果您看到 "INSIDE ELSE" 的粗体字,您就知道计算机 没有 进入
If
语句,并且adoRS.EOF
必须为真。 - 如果两者都看不到,则计算机根本就没有达到此代码,您的问题出在其他地方。