调试Classic Asp时调试器在错误的行上

时间:2010-10-29 02:15:23

标签: visual-studio debugging asp-classic vbscript

我在使用我可用的任何MS调试环境调试工作站上的任何ASP Classic网站时遇到问题。我在Win XP SP3上,使用内置的IIS 5.1。

几周前就开始了,它发生在多个项目中。在我的环境中有一些明显的变化,因为它在过去工作正常,即使在最近的IDE中,只要我附加到进程。然后它打破了如下所述。我已经放弃了,但我最近开始研究一个新项目,尝试调试并且有效!然而今天,它又回到了同样破碎的行为:

当我尝试设置断点时,IDE实际上将点设置在我单击的行的上方或下方几行。我试图在完全服务器端代码的行上设置断点,所以这不是因为它在嵌入代码块的HTML之前或之后跳过。偶尔它不会设置断点,给我一个空心断点图标并显示一条错误,表示该行没有可执行代码。

当我附加到IIS进程(inetinfo.dll,因为我在低隔离模式下运行)时,断点可能不会被命中。如果是,并且我开始单步执行,则选定的线会跳转,并且不会落在源中的每个连续线上,也不会按预期方式跟随控制结构。监视的变量未按预期更新。它显然看到的代码与我对相同行号不同。

无论是在浏览器中加载页面还是

,都会发生相同的行为
  • 从VS2010附加到流程,设置断点并刷新页面,或
  • 设置断点,附加到流程,然后刷新,或
  • 在我的源中添加'stop'语句,然后刷新页面。在这种情况下,我提供了一个可用调试器列表,并且每个调试器都执行完全相同的操作 - 它们跳过SAME代码行并遵循相同的'错误'路径。我已经尝试过VS2010,2008,2005,2003和Microsoft Script Debugger。

源代码似乎与调试器逐步完成的内容不同步。我确定在VS>中设置了“要求源文件与原始版本完全匹配”工具>选项>调试>一般

当然,这些是ASP Classic站点 - 没有编译代码,因此我在IDE中看到的源应该与调试器执行的源相同。它不是特定于一个项目 - 它至少发生在至少两个完全独立的项目上。并且,它发生在多台机器上 - 我将我的项目部署到测试服务器并尝试在那里进行调试,并且得到了相同的行为。

我找到了一些与包含非ANSI字符的UTF编码文件相关的类似声音问题的信息(你知道,你使用Unicode支持的那些!)herehere和{{ 3}},但我通过我的源代码找不到任何类似的文件。

有什么想法吗?谢谢!

6 个答案:

答案 0 :(得分:8)

我见过的唯一一次是将项目设置为在Release模式而不是Debug模式下构建。

检查这个程序有多容易取决于您的IDE设置,它可能已经在您的工具栏中,但如果不是。

  1. 右键点击解决方案
  2. 选择配置管理器...
  3. 确保在“Active solution configuration”下拉列表中选择了Debug

答案 1 :(得分:3)

在我的情况下,源代码文件中的线端是错误的。 VS期待\ x0D \ x0A,但我只有\ x0D。 选项 - >下有一个设置。环境 - >文件 - >行结束的东西(我不会在英语中使用vs,所以我只能猜)。检查这个选项解决了我的问题。

答案 2 :(得分:2)

我在VS2008中遇到了同样的问题。将asp文件转换为ANSI编码(使用Notepad ++)解决了它。

答案 3 :(得分:2)

编码肯定存在问题。该文件是ANSI,我转换为其他格式,并更改回ANSI并解决了问题。请小心,因为您可能会丢失更改编码的特殊字符。

答案 4 :(得分:2)

在评论之前我的文件中有一个额外的; 。不知道这是如何导致问题的,但删除它似乎解决了问题。

答案 5 :(得分:1)

这在VS2010中仍然存在。

我发现解决它的方法是选择Release vs Debug。重建项目。切换回Debug和boom。

你们都被重新同步了。