57

突然之间,我遇到了一个问题,我无法通过 Visual Studio 中的调试进入任何代码。跨步工作正常,但它拒绝进入 ( F11) 我的任何代码。以前是这样,现在突然不行了。

我在下面尝试了一些事情,但仍然没有成功:

  • 删除我的解决方案中每个项目中的所有 bin 文件,清理解决方案,重新构建解决方案。

  • 在解决方案中单独构建项目

  • 重启机器

它是一个在本地使用WCF服务的ASP.NET C#应用程序。它处于调试模式。我在使用该服务的页面上设置了一个断点。断点命中,但不会单步执行服务代码。

ASP.NET 站点和服务代码都在同一个解决方案中。这一下子不起作用,它以前确实起作用。

我该如何解决这个问题?

向服务项目添加断点我收到警告:

断点当前不会被命中。没有为此文档加载任何符号。

我删除了所有项目的所有 bin 文件夹,并一一重建。他们都成功了,但我仍然得到符号不会加载到我放入解决方案中任何项目的任何断点上,而不是断点工作的 ASP.NET 项目。我之前能够调试所有项目,这是一个突然的事情。

来自输出窗口的信息..

'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\SMDiagnostics\v4.0_4.0.0.0__b77a5c561934e089\SMDiagnostics.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.DurableInstancing\v4.0_4.0.0.0__31bf3856ad364e35\System.Runtime.DurableInstancing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Xaml.Hosting\v4.0_4.0.0.0__31bf3856ad364e35\System.Xaml.Hosting.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\2d49cf50\14eee2cf\App_Web_jmow15fw.dll', Symbols loaded.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.WorkflowServices\v4.0_4.0.0.0__31bf3856ad364e35\System.WorkflowServices.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Web\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Web.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Discovery\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Discovery.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activities.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Routing\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Routing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Channels\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Channels.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.IdentityModel\v4.0_4.0.0.0__b77a5c561934e089\System.IdentityModel.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
4

19 回答 19

53

关闭 Visual Studio:

  • 删除解决方案的 suo 文件(包含调试信息、断点等用户设置、书签和其他用户设置。)
  • 删除 Visual Studio 缓存文件(见下文)
  • 删除所有临时文件(从 VS9 到 VS10 的转变是 VS10 使用临时文件夹)
  • 使用 Windows 资源管理器手动删除所有 obj 和 bin 文件夹。

打开 Visual Studio 并重建所有内容。这总是有效的。请参阅C# VS2010 Entering break mode failed

以供参考:

Private Sub ClearVS9
    ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\VisualStudio\9.0\ProjectAssemblies")
    ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\VisualStudio\9.0\Recent")
    ClearFolder(oShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\Local Settings\Application Data\ApplicationHistory")
    ClearFolder(oShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\Local Settings\Application Data\Microsoft\VisualStudio\9.0\ProjectAssemblies")
    ClearFolder(oShell.ExpandEnvironmentStrings("%WINDIR%") & "\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files")
End Sub

Private Sub ClearVS10
    ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Local\Microsoft\WebsiteCache")
    ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Local\Microsoft\VisualStudio\10.0\ProjectAssemblies")
End Sub

查看链接The evil suo 文件 - 与JMarsch 提到的Visual Studio 战斗和获胜。

于 2012-06-06T05:37:32.153 回答
35

就我而言,我正在进入一个产生IEnumerable. 在这种情况下,F11 可能会跳过该方法直到IEnumerable被迭代,因为它的执行被推迟到那个时候。

于 2016-05-12T17:39:34.830 回答
9

在此处输入图像描述
我的问题是,当我设置断点时,代码会在该点正确停止,但是当我按下F10F11代码将简单地完成运行而不是转到下一行时。我还注意到,当代码在断点处停止时,我无法使用光标将鼠标悬停在变量上以查看它们的值。这是我纠正问题的方法:

  1. 在项目打开但未运行的情况下,确保显示标准工具栏(可能是因为它是默认工具栏)
  2. 查看工具栏中的下拉列表,其中包含“调试”、“发布”、“配置管理器”选项。从此列表中选择调试。我的设置为发布
于 2016-04-14T13:22:57.890 回答
5

当 Visual Studio无法加载 DLL 的符号(.PDB 文件)时,它不会单步执行代码。

下面是一篇文章的链接和一些屏幕截图,这些屏幕截图解释了如何发现 Visual Studio 尝试加载 PDB 文件的位置。一旦你找到了你拥有的目录,只需将 .pdb 文件复制到那里,Visual Studio 就会进入。

https://devblogs.microsoft.com/devops/understanding-symbol-files-and-visual-studios-symbol-settings/

模块窗口 --> 调试 > 窗口 > 模块

模块窗口 --> 调试 > 窗口 > 模块

符号加载信息....

符号加载信息窗口

于 2019-09-24T12:53:48.860 回答
2

试试这个:

  1. %temp%从该位置删除临时 ASP.NET 文件。
  2. 一个一个地清理和构建您的解决方案中的项目,然后构建您的主机并尝试调试。

它对我有用。

于 2012-05-29T15:16:44.343 回答
2

你的F11钥匙可能会反弹到别的东西上。如果您单击 Visual Studio 中的 step-into 按钮,它可能会起作用。

于 2012-06-08T11:44:18.047 回答
1
  1. WCF 项目也是 Web 应用程序吗?是否为它启用了 ASP.NET 调试?(右键单击 WCF 项目,转到Properties | Web

  2. 当引用被弄乱时,我也曾在项目中发生过这种情况——确保来自 Web 应用程序的引用与解决方案中的项目副本相同。

  3. 检查配置管理器(在解决方案资源管理器中,右键单击解决方案|配置管理器),并确保两个项目都在构建。

  4. 有时.suo文件会损坏,您可能会遇到各种奇怪的行为。您可以尝试删除它(如果您偏执,请制作备份副本,请参阅The evil suo 文件 - 与 Visual Studio 战斗并获胜)。

于 2012-06-01T14:21:20.160 回答
1

我遇到过同样的问题。

我想进入一个返回 an 的方法,IEnumerator我只是通过简单的调用(只是方法的名称)来调用它。

private void Start()
{
    GetTagsFromCloud();
}

但是由于它是在后台运行的,所以最好用下面的方式调用它。

private void Start()
{
    StartCoroutine(GetTagsFromCloud());
}
于 2018-11-30T05:22:25.877 回答
1

如果您仍然可以使用工具栏但F11死机了,那么 Visual Studio 可能没有任何问题,但是按键的优先级更高,并且永远不会到达 Visual Studio。

您可以通过将密钥与另一个程序(如另一个应用程序或游戏)一起使用来验证这一点。如果它在那里也不起作用,那么就是这种情况。

在弄乱 VS 之前尝试一下是很好的,因为它更快更安全。您可能最终重新安装了整个工作室,却发现问题仍然存在。

我遇到了同样的问题,在我的情况下,更高优先级的消费者是 Nvidia geforce 体验,我将其设置F11为 FPS 指示器切换。当我关闭该程序的游戏内覆盖时(该程序始终处于活动状态并准备好击键以显示 fps、录制、拍摄快照、广播等)F11在 PC 重新启动后就像一个魅力。

我假设还有其他永远在线的相同或相似角色的应用程序可能会消耗击键。

于 2019-06-18T20:52:16.533 回答
0

根据我的阅读和理解,您应该查找以下文件:

项目的程序集名称.pdb 在 bin 目录中。如果你没有看到它,它就没有被建造。请参阅我关于将调试信息设置为完整和选项/调试/符号的评论。

将项目的构建输出设置为详细或详细(工具/选项/项目和解决方案/构建和运行/MSBuild 项目构建输出详细程度)。

使用该文件(即 AssemblyName.pdb)查找某些任务、删除、复制等,并查看是否可以找出是否(尝试)删除该 pdb 文件,该文件从 (dll/exe) 引用到它所在的位置把它,复制它,等等。

如果它没有被构建,你只会看到删除任务。如果是,您将看到复制和参考任务。这些复制和引用路径将告诉您需要将该程序集 (AssemblyName.exe) 的模块控制台指向何处以获取它的符号文件(即该 pdb 文件被复制到的位置)。

于 2012-06-05T16:52:56.247 回答
0

在我的例子中,我在 Visual Studio 之外运行了一个 Web 应用程序。我尝试的程序集是从我的常规文件系统中的某个位置引用的,但在运行时它是从 GAC 加载的。我一直认为 .NET 尝试先从本地 bin 加载,然后是 GAC,但我猜不是。无论如何,它无法在 GAC 中找到该版本的 .pdb 调试符号,这就是我无法介入的原因。一旦我在 GAC 中更新了程序集并提供了 .pdb 文件,它就可以工作了。

于 2014-05-12T18:34:25.567 回答
0

如果您自定义了输出路径,请确保所有输出路径都指向同一个输出目录

于 2015-12-04T09:57:00.493 回答
0

就我而言,我试图进入 Web 服务方法,但它不起作用。在我使用 Unity 解决服务实例后开始工作。

更多信息: 使用 Unity 解析类型实例

于 2016-12-08T16:08:52.430 回答
0

在我的情况下,在 VS2008 中,检查 Project Properties|Debug 下的“启用非托管代码调试”选项就可以了。我不知道为什么会这样,因为项目中的所有代码都在 vb.net 中。

在以后的版本中,此选项已重命名为“启用本机代码调试”。

于 2016-12-27T06:01:47.910 回答
0

我也遇到了这个问题,原来我期望采用的方法是 Moq'd(我正在调试一个测试)。这个起订量刚回来。

于 2020-04-18T03:28:25.940 回答
0

在 VS 2005 上,检查c/c++ (项目属性)下的优化是否设置为Maximize Speed(/02)。将设置更改为Disabled(/Od)

于 2020-06-05T15:39:23.620 回答
0

一些解决方案,这可能不是那么明显。检查您的语言设置并将其更改为英语。我知道这听起来很愚蠢,但我在 2 小时后解决了它。我什至没有意识到我将它设置为我的第二语言

于 2021-09-06T23:25:27.443 回答
0

在 VS2022 预览中遇到此问题并删除 .suo 文件修复了它。

必须使用文件资源管理器搜索文件。该文件还包含在隐藏的 .vs 文件夹中。

于 2022-02-08T15:36:50.993 回答
-1

关闭 Visual Studio 然后重新启动对我有用。

于 2019-06-08T17:24:24.863 回答