我在使用我可用的任何MS调试环境调试工作站上的任何ASP Classic网站时遇到问题。我在Win XP SP3上,使用内置的IIS 5.1。
几周前就开始了,它发生在多个项目中。在我的环境中有一些明显的变化,因为它在过去工作正常,即使在最近的IDE中,只要我附加到进程。然后它打破了如下所述。我已经放弃了,但我最近开始研究一个新项目,尝试调试并且有效!然而今天,它又回到了同样破碎的行为:
当我尝试设置断点时,IDE实际上将点设置在我单击的行的上方或下方几行。我试图在完全服务器端代码的行上设置断点,所以这不是因为它在嵌入代码块的HTML之前或之后跳过。偶尔它不会设置断点,给我一个空心断点图标并显示一条错误,表示该行没有可执行代码。
当我附加到IIS进程(inetinfo.dll,因为我在低隔离模式下运行)时,断点可能不会被命中。如果是,并且我开始单步执行,则选定的线会跳转,并且不会落在源中的每个连续线上,也不会按预期方式跟随控制结构。监视的变量未按预期更新。它显然看到的代码与我对相同行号不同。
无论是在浏览器中加载页面还是
,都会发生相同的行为源代码似乎与调试器逐步完成的内容不同步。我确定在VS>中设置了“要求源文件与原始版本完全匹配”工具>选项>调试>一般
当然,这些是ASP Classic站点 - 没有编译代码,因此我在IDE中看到的源应该与调试器执行的源相同。它不是特定于一个项目 - 它至少发生在至少两个完全独立的项目上。并且,它发生在多台机器上 - 我将我的项目部署到测试服务器并尝试在那里进行调试,并且得到了相同的行为。
我找到了一些与包含非ANSI字符的UTF编码文件相关的类似声音问题的信息(你知道,你使用Unicode支持的那些!)here,here和{{ 3}},但我通过我的源代码找不到任何类似的文件。
有什么想法吗?谢谢!
答案 0 :(得分:8)
我见过的唯一一次是将项目设置为在Release模式而不是Debug模式下构建。
检查这个程序有多容易取决于您的IDE设置,它可能已经在您的工具栏中,但如果不是。
答案 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。
你们都被重新同步了。