【发布时间】:2016-08-22 16:30:43
【问题描述】:
我在使用任何可用的 MS 调试环境在我的工作站上调试任何 ASP Classic 网站时遇到问题。我在 Win XP SP3 上,使用内置的 IIS 5.1。
它始于几周前,并发生在多个项目中。我的环境明显发生了变化,因为它在过去运行良好,即使在最近的 IDE 中,只要我附加到进程。然后它如下所述破裂。我已经放弃了,但我最近开始研究一个新项目,尝试调试并且成功了!但今天,它又回到了同样的错误行为:
当我尝试设置断点时,IDE 实际上将点设置在我单击的行上方或下方几行处。我试图在完全是服务器端代码的行上设置断点,所以这不是因为它在带有嵌入式代码块的 HTML 之前或之后跳过。有时它不会设置断点,给我一个空心的断点图标并显示一个错误,说行中没有可执行代码。
当我附加到 IIS 进程(inetinfo.dll,因为我在低隔离模式下运行)时,断点可能不会被命中。如果是这样,并且我开始单步执行,则所选线会跳来跳去,并且不会落在源中的每条连续线上,也不会按预期遵循控制结构。监视变量未按预期更新。很明显,它看到的代码与我为相同的行号看到的代码不同。
无论我在浏览器中加载页面和
,都会发生相同的行为- 从 VS2010 附加到进程,设置断点并刷新页面,或者
- 设置断点,附加到进程,然后刷新,或者
- 在我的源代码中添加一个“停止”语句,然后刷新页面。在这种情况下,我会看到一个可用调试器的列表,它们中的每一个都做完全相同的事情——它们跳过相同的代码行并遵循相同的“不正确”路径。我尝试过 VS2010、2008、2005、2003 和 Microsoft Script Debugger。
源代码似乎与调试器正在单步执行的内容不同步。我已经确定在 VS > Tools >Options > Debugging > General 中设置了“要求源文件与原始版本完全匹配”
当然,这些都是 ASP Classic 站点——没有编译代码,所以我在 IDE 中看到的源代码应该与调试器正在执行的代码相同。它并不特定于一个项目——它目前至少发生在两个完全独立的项目上。而且,它发生在多台机器上——我将我的项目部署到一个测试服务器并尝试在那里调试,并得到了相同的行为。
我发现了一些与包含非 ANSI 字符的 UTF 编码文件相关的类似问题的信息(您知道,您使用 Unicode 支持的文件!)here、here 和 here,但我通过我的来源,找不到任何类似的文件。
有什么想法吗?谢谢!
【问题讨论】:
标签: visual-studio debugging asp-classic vbscript