断点当前无法命中,为什么?

23
有时会出现“断点将不会被命中,且不会加载任何符号”的提示消息。
在VS.NET中,红色图标会变色,而调试模式却无法正常工作。
这是什么原因呢?

请查看我的回答。顺便提一下:在执行链接中的每个修复尝试(或任何其他回答)之后,您将需要实际启动一个新进程(用于您要附加的内容),并再次运行程序(例如:nunit、IIS站点等),然后图标才会再次变为红色。否则,图标将保持黄色。 - Entree
14个回答

20
你可能正在以发布模式运行你的项目,如果是这样,请切换到调试模式。 在此输入图片描述

1
哦,你在这个问题上理解我了。 - cwhsu
这是一个很容易被忽略的事情。 - Gangula

8

来自Philip Carney的关于同名文件在Visual Studio调试中出现问题的文章

按照下面链接中的每个项目逐一操作,但是请重复以下步骤:

  1. 在Visual Studio中停止调试(点击红色方块图标)

  2. 清理解决方案

  3. 构建解决方案

  4. 工具 > 附加到进程(或开始调试)

  5. 启动您要附加到的程序,并运行它,使您的代码被触发

    • 如果附加到nunit.exe,则打开NUnit并运行测试,以使断点被触发

    • 如果附加到w3wp.exe(IIS站点),则在浏览器中打开您的站点,并转到将触发您的断点的页面


5

调试 > 窗口 > 模块窗口就足以让我明白它所寻找的dll在GAC中而不是我的解决方案中。谢谢! - kiev

4

在尝试了几种建议的解决方法之后,我做了以下操作才使它正常工作。

  1. 在“解决方案资源管理器”中右键单击我的项目,并选择“属性”。
  2. 转到“Web”部分,并确保“启动操作”设置为“当前页面”。

我花了3小时半时间...现在我要去喝一杯了。


2

我通过在"附加到进程"表单中的"附加到"字段中选择自动:本机代码来解决了这个问题。enter image description here


自动选项在我的情况下无法工作,因此我选择了托管的.NET 4.x,用于一个asp.net框架4.8应用程序,它起作用了。谢谢! - Andy

2

在“Debug/Release”下拉列表旁边,还有一个带有“Any CPU/Configuration Manager...”的下拉列表。单击“Configuration Manager...”,您会发现一些项目可能处于发布模式。将它们全部改为调试模式。


确保它们被设置为构建!这似乎很明显,但由于某种原因,我的启动程序被取消了勾选。为什么它没有触发断点?哦,是的,代码不同,因为它没有被构建! - Elton

1
这可能发生在符号文件与程序集(远程调试)不同的情况下,或者当没有“直接路径”时,程序集尚未加载,但可以使用反射和运行时所需程序集的加载进行加载。

1
这也可能发生在调试器无法附加到进程的情况下。如果是这种情况,您可以随时转到“调试 - 附加到进程...”并选择正确的进程。一旦VS确定它可以命中断点,您的断点应该恢复正常。

1
当你将鼠标悬停在禁用的断点上时,会显示什么信息?通常它会告诉你问题所在。我最喜欢的是旧的“源代码已过期”,特别是当我调试 DLL 时。另一个喜欢的是你正在查看的文件不是你正在调试的文件(在另一个文件夹中的副本?)。如果情况允许你在调用程序中设置断点,但不能在被调用程序中设置断点,那么步入被调用程序将强制 VS 打开“正确”的源文件,然后你就可以设置断点了。这很令人困惑,我通常在这个时候对 VS 发誓,似乎这样有帮助。

1

我遇到了同样的问题。通常情况下,这是由于构建版本不同而导致的,有些东西不匹配。我清理了我的项目,重新构建了它,然后部署它,这样就使一切重新同步了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接