'Step Into'突然在Visual Studio中无效

时间:2012-05-29 14:41:12

标签: .net visual-studio-2010 debugging visual-studio-debugging

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

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

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

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

  • 重启机器

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

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.

17 个答案:

答案 0 :(得分:44)

关闭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

请参阅JMarsch提到的链接The evil suo file - fighting and winning with Visual Studio

答案 1 :(得分:20)

就我而言,我正在踩到一个让IEnumerable返回的方法。在这种情况下,F11可以跳过该方法,直到IEnumerable被迭代,因为它的执行被推迟到那时。

答案 2 :(得分:5)

enter image description here我使用VS 2017,但这也适用于2015年。我的问题是,当我设置断点时,代码将在该点正确停止,但是当我按下F10或F11时,代码将完成运行而不是转到下一行。我还注意到,当代码在断点处停止时,我无法使用光标悬停在我的变量上以查看它们的值。以下是我纠正问题的方法

  1. 项目打开但未运行确保显示标准工具栏(可能是因为它是默认值)
  2. 查看工具栏中的下拉列表,其中包含Debug,Release,Configuration Manager选项。从此列表中选择Debug。我被设置为发布

答案 3 :(得分:4)

当无法加载DLL的符号(。PDB文件)时,Visual Studio不会进入代码。

下面是文章的链接和一些屏幕截图,这些屏幕截图说明了如何发现Visual Studio尝试在何处加载PDB文件。找到目录后,只需将.pdb文件复制到其中,Visual Studio就会进入该目录。

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

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

Modules Window --> Debug > Windows > Modules

Symbol Load Information....

Symbol Load Information Window

答案 4 :(得分:2)

试试这个:

  1. %temp%位置删除临时ASP.NET文件。
  2. 逐个清理并构建解决方案中的项目,然后构建主机并尝试调试。
  3. 它对我有用。

答案 5 :(得分:1)

  1. WCF项目也是一个Web应用程序吗?是否启用了ASP.NET调试? (右键单击WCF项目,转到属性 | Web

  2. 当参考被弄乱时,我也发生了这种情况 - 确保Web应用程序的引用与解决方案中的项目副本相同。

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

  4. 有时.suo文件被破坏,您可以获得各种奇怪的行为。您可以尝试删除它(如果您是偏执狂,请制作备份副本,请参阅 The evil suo file - fighting and winning with Visual Studio )。

答案 6 :(得分:1)

我有同样的问题。

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

private void Start()
{
    GetTagsFromCloud();
}

但是由于它是在后台运行的,因此最好通过以下方式来调用它。

private void Start()
{
    StartCoroutine(GetTagsFromCloud());
}

答案 7 :(得分:1)

您的 F11 键可能会反弹到其他位置。如果单击Visual Studio中的步入按钮,它可能会起作用。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

在我的情况下,我试图进入一个Web服务方法,它无法正常工作。 在我使用Unity解析了服务实例后开始工作。

更多信息: Resolving Instances of Types Using Unity

答案 11 :(得分:0)

在我的VS2008案例中,检查Project Properties | Debug下的“启用非托管代码调试”选项。我不知道为什么这个有效,因为项目中的所有代码都在vb.net中。

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

如果您仍然可以使用工具栏,但F11已死,则Visual Studio可能没有问题,但是按键的优先级较高,因此永远不会达到VS。

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

最好先尝试一下VS,因为它更快,更安全。您可能最终会发现整个问题仍然存在,因此重新安装了整个Studio。

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

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

答案 14 :(得分:0)

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

项目在bin目录中的程序集Name.pdb。如果你没有看到它,它就没有建成。请参阅我关于将调试信息设置为完整以及选项/调试/符号的注释。

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

使用此文件(即AssemblyName.pdb)查找某些任务,删除,复制等,看看是否可以找出是否(尝试)删除pdb文件,它是从(dll / exe)引用的)它放置它,复制它等等。

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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