Visual studio 调试经典Asp时调试器位于错误行

Visual studio 调试经典Asp时调试器位于错误行,visual-studio,debugging,asp-classic,vbscript,Visual Studio,Debugging,Asp Classic,Vbscript,我在使用任何可用的MS调试环境调试工作站上的任何ASP Classic网站时遇到问题。我在WinXP SP3上,使用内置的IIS5.1 它开始于几周前,发生在多个项目中。我的环境中发生了一些明显的变化,因为在过去,即使是在最近的IDE中,只要我重视这个过程,它都工作得很好。然后它像下面描述的那样坏了。我已经放弃了,但我最近开始做一个新项目,试着调试,结果成功了!然而,今天,它又回到了同样的破碎行为: 当我试图设置断点时,IDE实际上会将该点设置在我单击的行的上方或下方几行。我试图在完全是服务器端

我在使用任何可用的MS调试环境调试工作站上的任何ASP Classic网站时遇到问题。我在WinXP SP3上,使用内置的IIS5.1

它开始于几周前,发生在多个项目中。我的环境中发生了一些明显的变化,因为在过去,即使是在最近的IDE中,只要我重视这个过程,它都工作得很好。然后它像下面描述的那样坏了。我已经放弃了,但我最近开始做一个新项目,试着调试,结果成功了!然而,今天,它又回到了同样的破碎行为:

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

当我连接到IIS进程(inetinfo.dll,因为我在低隔离模式下运行)时,断点可能不会被命中。如果是,并且我开始单步执行,则选定的线会跳来跳去,不会落在源中的每一条连续线上,也不会像预期的那样遵循控制结构。监视的变量未按预期更新。很明显,对于相同的行号,它看到的代码与我看到的代码不同

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

  • 从VS2010附加到进程,设置断点并刷新页面,或
  • 设置断点、附加到进程并刷新,或
  • 在我的源代码中添加“stop”语句,并刷新页面。在这种情况下,我看到了一个可用调试器的列表,它们中的每一个都做了完全相同的事情——它们跳过相同的代码行并遵循相同的“错误”路径。我尝试了VS2010、2008、2005、2003和Microsoft脚本调试器
源代码似乎与调试器正在执行的内容不同步。我已经确定在VS>Tools>Options>Debugging>General中设置了“要求源文件与原始版本完全匹配”

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

我发现了一些与包含非ANSI字符的UTF编码文件(您知道,您使用Unicode支持的字符)相关的类似声音问题的信息,但是我浏览了我的源代码,找不到任何类似的文件


有什么想法吗?谢谢

我见过的唯一一次是当项目被设置为以发布模式而不是调试模式构建时

检查这一点有多容易取决于您的IDE设置,它可能已经存在于您的工具栏中,但如果不存在的话

  • 右键单击解决方案
  • 选择配置管理器
  • 确保在“活动解决方案配置”下拉列表中选择了调试

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

    编码肯定有问题。该文件是ANSI格式的,我转换成其他格式,然后又改回ANSI并解决了这个问题。请小心,因为更改编码时可能会丢失特殊字符。

    这在VS2010中仍然存在

    我发现解决这个问题的办法是选择Release vs Debug。重建项目。切换回调试并启动


    你们都重新同步了。

    在我的例子中,sourcecodefile中的lineends是错误的。VS expect\x0D\x0A但我只有\x0D。
    在选项->环境->文档->行尾的某物下有一个设置(我不使用英语中的vs,所以我只能猜测)。选中此选项解决了问题4 me。

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

    不,已经检查过了——我目前正在处理的项目中只有一个调试配置。同样,没有“编译”步骤来调用配置——只需保存.ASP文件并刷新浏览器。谢谢,tho!此问题是否发生在其他人的机器上?如果是,请检查项目的生成设置,以确保它生成正确的调试信息。我想你试过重建吧?如果这一切都不起作用,那么我可能会把手举到空中,尖叫,然后重新安装VS。没有什么可建的,但我还是重建了,没有任何效果。我看看能不能在另一台机器上复制,好主意!我不认为这只是VS——它发生在VS的所有版本中,加上MS脚本调试器,因此正在调用一些常见组件……我想补充一点,也有必要通过
    指令检查脚本中包含的所有文件的编码。今年最被低估的答案是People+1。有一个80000多行的.c文件,当放置断点时,程序将断开数千行。它将通过正确的逻辑步骤,但永远不会显示正确的位置。找到这些金块;//靠自己站起来,把他们赶走,就解决了这个问题。