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

Val*_*Val 9 debugging vbscript asp-classic visual-studio

我在使用我可用的任何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中看到的源应该与调试器执行的源相同.它不是特定于一个项目 - 它至少发生在至少两个完全独立的项目上.并且,它发生在多台机器上 - 我将我的项目部署到测试服务器并尝试在那里进行调试,并获得相同的行为.

我发现了一些有关UTF编码文件的相似声音问题的信息,这些文件包含非ANSI字符(你知道,你使用Unicode支持的那些!),这里,这里这里,但是我通过我的源代码找不到这样的任何文件.

有任何想法吗?谢谢!

kni*_*hor 8

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

检查这个是多么容易取决于你的IDE设置,它可能已经在你的工具栏中,但如果不是.

  1. 右键单击解决方案
  2. 选择Configuration Manager ...
  3. 确保在"Active solution configuration"下拉列表中选择Debug