如何将 "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(&quot;&lt;!-- Before the If Not adoRS.EOF block --&gt;&quot;)
<font color=red>Line 131:        &lt;script language=&quot;javascript&quot;&gt;
</font>Line 132:            window.alert(&quot;Before the If Not adoRS.EOF block js&quot;);
Line 133:        &lt;/script&gt;</pre></code>

...看来我还在利维坦出没的水域逆流而上

让我们调试一下。必须满足以下三种情况之一:

  1. 代码为运行,输入If,设置IsNewBusiness为真
  2. 密码为运行,输入If,设置IsNewBusiness为false。
  3. 密码为运行,不输入If。因此,IsNewBusiness必须设置为true。
  4. 代码从一开始就不是 运行。 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 必须为真。
  • 如果两者都看不到,则计算机根本就没有达到此代码,您的问题出在其他地方。