【问题标题】:Visual Studio detaches from application as soon as debugging starts一旦调试开始,Visual Studio 就会从应用程序中分离出来
【发布时间】:2010-10-06 10:35:39
【问题描述】:

我有一个一直能够在 Visual Studio 中运行的 Web 应用程序,它调试得很好(断点工作,我可以暂停执行等)。最近,行为突然发生了变化,发生了一些事情:

  • 我开始调试,它启动 IE 并加载应用程序,但几秒钟后(有时页面甚至还没有显示),Visual Studio 就像调试已停止一样 - 我可以在 VS 中编辑代码再次,工具栏上的“播放”按钮被启用。应用程序继续在刚刚生成的 IE 窗口中运行,但我没有附加到它
  • 在 VS 正在“调试”的这几秒钟内,因为它分离,我的断点显示为空心 - 好像我设置为“释放”模式并且它们不会被命中。事实上,我在 Page_Load 中设置了一个断点,它会直接跳过。我已经检查过了,我设置为调试模式,尽管我的工具栏中缺少编译模式下拉菜单(我检查了构建属性以确保我处于调试模式)。

有人可以在这里解释一下吗?

【问题讨论】:

  • 我在 WinXP 上的 VS 2005 中的 WAP(Web 应用程序项目,而不是“网站”)遇到了同样的问题。我在 Web.config 中有一个 system.web。我是我机器上的管理员,所以我总是运行我以管理员身份打开的所有内容,对吗?这在各种项目中间歇性地出现,但不幸的是,我不小心记录了与项目相关的变量(真丢脸!)。
  • @apollodude217:如果您使用的是 Vista 或 7,那么拥有本地管理员权限和“以管理员身份运行某些东西”是有区别的。如果您右键单击一个链接并选择“以管理员身份运行”,这就是我在这里所指的解决此问题的方法 - 由于 Vista 的 UAC,仅仅成为您计算机上的本地管理员是不够的。跨度>

标签: visual-studio debugging windows-8.1 windows-vista uac


【解决方案1】:

事实证明,这实际上是升级到 Windows Vista 的结果。 VS 没有“以管理员身份运行”,这导致它缺乏附加到其他进程进行调试的权限。结果,调试将在开始后立即停止。将 VS 快捷方式更改为以管理员身份运行可解决此问题。

【讨论】:

  • 很高兴知道。我会投赞成票,但我没有注册(等待 MS Live Messenger 支持 OpenID)。所以显然它并不特定于网络应用程序。您可能无法编辑“web”,但离开它可能没问题。但是,最好将“vista”添加为标签,以帮助其他人找到它。
  • 我已经修改了标签。我安装的第一件事是禁用 UAC,所以我什至没有考虑这可能是其他人计算机上的问题。以后我会记得检查的。
  • 对不起,我不清楚;我的意思是从问题标题中去掉“网络”这个词。我认为在正文中具体说明您的案例很好,但标题表明它特定于 Web 应用程序,这可能会让某些人无法阅读正文以查看一般答案。现在有点混乱。 ;)
  • 尽我所能获得最低权限:VS 可以在没有管理员权限的情况下在 Vista 上正常调试——只要要调试的进程在同一帐户下运行。
  • 升级到 Windows 8.1 时遇到同样的问题。这个解决方案奏效了
【解决方案2】:

我经历过同样的行为。原因是存在多个<system.web> 部分(web.config 架构允许)。 Visual Studio 调试器(版本 2008 和 2010 已测试)仅查看第一个遇到的部分。因此,如果您的<compilation debug="true"> 标签不在第一个标签中,则它认为不存在compilation.debug 设置,通常会尝试将<compilation debug="true"> 添加到第一个<system.web>。在某些情况下,VS2008 只是在这种情况下静默处理。例如看这里:https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=510354#details"

【讨论】:

    【解决方案3】:

    您最近是否在服务器/工作站上安装了其他任何东西?

    我们有一个第三方应用程序不允许我们调试,w3wp.exe 在尝试调试时立即崩溃。

    【讨论】:

      【解决方案4】:

      当我将一些代码放入崩溃的构造函数中时,我遇到了类似的情况。在应用程序启动后调试会断开连接的完全相同的问题。

      如果是的话,请检查您是否没有配置类构造函数以在崩溃的 Web 启动期间运行...

      【讨论】:

        【解决方案5】:

        快速 Windows 7 更新:我必须将“localhost”添加到我的受信任站点列表中以更正此问题...看图。

        【讨论】:

          【解决方案6】:

          对于那些(如我)上述解决方案不起作用的人来说,只是一种解决方法:启动您要调试的应用程序后,转到调试 -> 附加到进程,并将其附加到您要调试的进程。在我的机器上工作。

          【讨论】:

          • 尽管如果您附加到的进程正在以提升的权限运行,这仍然不起作用,除非您以管理员身份运行 Visual Studio 来启动它(无论如何,这就是 OPS 的解决方案)。
          • @the_mandrill 正确。这个问题似乎有多种可能的原因,每种都有不同的解决方案。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-20
          相关资源
          最近更新 更多