174

我现在正在研究一个ColdFusion项目,至少 Visual Studio 对我来说开始表现得很奇怪。

我观察到,当我开始调试时,它构建了项目,开始部署,部署完成并开始为我的项目加载符号。

但是它很慢,我不知道为什么它开始做这一步。我可能做了什么?

这个符号加载步骤是否必要?我怎样才能禁用它?

在工具 -> 选项 -> 调试 -> 符号对话框中,没有添加符号文件 (.pdb) 位置。我在下面的字段中指向了我的项目的调试目录,并选中了“仅当符号为 .... 时才搜索上面的目录”复选框。我应该如何设置此对话框以关闭符号加载?

我在 Modules 窗口中查看了哪些符号已加载,但它对我没有任何意义。问题是什么?

在此处输入图像描述

4

17 回答 17

278

调试 -> 删除所有断点 ( http://darrinbishop.com/blog/2010/06/sharepoint-2010-hangs-after-visual-studio-2010-f5-debugging ) 之后你可以再次使用它们,但是这样做一次。它也将删除某种“无效”断点,然后加载符号将再次快速。我几天来一直在追逐这个问题:(。

于 2010-09-21T11:35:28.223 回答
148

加载缓慢的另一个原因是如果您在调试选项中禁用了“仅启用我的代码”。要启用此功能,请访问:

Tools -> Options -> Debugging -> General -> Enable Just My Code (Managed Only) 

确保选中此项。

于 2011-02-14T12:43:46.290 回答
47

在工具、选项、调试、符号中进行配置。

您可以查看输出窗口(视图、输出)以查看它通常在做什么。如果它真的很慢,那可能意味着它正在访问一个符号服务器,可能是微软的,以下载丢失的符号。对于每次启动时都找不到的每个文件,这需要三个 HTTP 命中 - 您有时可以在底部的状态栏中或例如 Fiddler 中看到这一点。您可以在调试时在 Debug、Windows、Modules 中查看哪些模块已加载符号。

符号意味着您可以在第三方和系统程序集中获得有用的堆栈跟踪信息。你自己的代码肯定需要它们,但我认为无论如何都会加载它们。您最好的选择是关闭该菜单中的任何非本地符号源,如果您正在为不需要调试的系统程序集加载大量符号,则可以暂时禁用加载这些符号以加快调试开始 -但加载它们通常很有用。

于 2010-07-31T10:57:25.787 回答
45

刚遇到这个问题。

我通过导航到修复它:

工具->选项->调试->符号

然后取消选中符号文件 (.pdb) 位置的所有非本地源

例如Microsoft 符号服务器msdl.microsoft.com/download/symbols

于 2013-07-15T10:12:33.403 回答
23

我遇到了类似的问题。在我的情况下,我已将 _NT_SYMBOL_PATH 设置为从 Microsoft 服务器下载以在 WinDbg 中使用,并且看起来在设置时,Visual Studio 将使用它而无法忽略它。删除该环境变量解决了我的问题。

于 2011-02-14T13:07:10.843 回答
19

您可以尝试以下对Visual Studio 调试/加载非常慢的答案:

  1. 转到工具 -> 选项 -> 调试 -> 常规

  2. 选中“仅启用我的代码”旁边的复选标记。

  3. 转到工具 -> 选项 -> 调试 -> 符号

  4. 单击“...”按钮并在本地计算机上的某处创建/选择一个新文件夹以存储缓存的符号。我将我的命名为“符号缓存”并将其放入 Documents -> Visual Studio 2012。

  5. 单击“加载所有符号”并等待从 Microsoft 的服务器下载符号,这可能需要一段时间。请注意,加载所有符号按钮仅在调试时可用。

  6. 取消选中“Microsoft 符号服务器”旁边的复选标记,以防止 Visual Studio 远程查询 Microsoft 服务器。

  7. 单击“确定”。

也尝试删除所有断点(调试>删除所有断点),

另请参阅加载符号时 Visual Studio 2015 RC1 在调试模式下挂起

于 2016-10-11T07:48:36.440 回答
6

对我来说,它似乎与断点有关,如接受的答案所示。但是,我发现了两个不涉及删除所有断点的解决方法:

  • 重新启动 Visual Studio 似乎可以暂时修复它。
  • 在调试时单击“X”按钮关闭 Visual Studio 会导致“您要停止调试吗?” 弹出消息框;当此消息框启动时,符号以正常速度加载。加载所有符号后,您可以单击“否”取消关闭。
于 2012-11-01T19:43:44.100 回答
6

刚遇到这个问题。删除断点不起作用,或者至少不是靠它自己。失败后我去了工具>选项>调试>符号和“空符号缓存”

然后清洗溶液并重建。

现在似乎工作正常。因此,如果您尝试了列出的所有其他事情,但仍然没有什么不同,这些额外的信息可能会有所帮助......

于 2013-01-29T16:11:28.380 回答
2

我的 2 美分,

我在尝试以 x64 发布模式(CPU 采样)获取(Visual Studio 2013)诊断报告时遇到了类似的问题,并且在加载所需 dll 文件的符号时,我的可执行文件的符号将无法加载。

我没有在符号菜单中更改任何内容,而是在解决方案资源管理器中我的可执行文件线程的属性页中进行了一些更改,即

配置属性/常规/启用托管增量构建为 YES

配置属性/调试/合并环境为 NO

配置属性/C/C++/启用浏览信息到YES (/FR)

配置属性/链接器/启用增量链接到 YES (/INCREMENTAL)

编辑:最后一个可以解决问题

……

配置属性/链接器/调试/生成调试信息为是(/DEBUG)

……

之后它工作并很好地加载了符号。我确定以上一项或多项对我有用(尽管我不确定是哪一种),只是想让其他人知道并尝试一下..

和平

于 2014-04-03T12:04:42.547 回答
2

我遇到了同样的问题,即使关闭符号加载后,Visual Studio 中的模块加载速度也非常慢。

解决方案是关闭防病毒软件(在我的情况下为 NOD32)或更好,为其添加异常,以便它忽略您的进程加载程序集的路径(在我的情况下是 GAC 文件夹和临时 ASP .NET 文件文件夹)。

于 2013-11-05T09:31:19.787 回答
2

在我的例子中,Visual Studio 正在寻找在我的机器上引用光驱的路径中的第 3 方 PDB。如果托盘中没有光盘,Windows 大约需要大约 30 次失败,这反过来又降低了 Visual Studio 的速度,因为它试图从该位置加载 PDB。我的完整答案中提供了更多详细信息:https ://stackoverflow.com/a/17457581/85196

于 2013-07-03T21:20:08.110 回答
1

尝试右键单击其中一个断点,然后选择“位置”。然后选中复选框'允许源代码与原始版本不同'

于 2013-01-31T09:16:39.110 回答
1

Visual Studio 2017 调试符号“加速”选项,假设您还没有对选项自定义发疯:

  1. Tools -> Options -> Debugging -> Symbols
    一个。启用“Microsoft 符号服务器”选项
    b。单击“清空符号缓存”
    c. 将符号缓存设置为易于查找的位置,例如C:\dbg_symbols%USERPROFILE%\dbg_symbols
  2. 重新运行调试后,让它从头到尾加载一次所有符号,或尽可能多地加载。

1A和2是最重要的步骤。1B 和 1C 只是有助于您跟踪符号的有用更改。

在您的应用程序至少加载一次所有符号并且调试没有提前终止后,这些符号应该在下次调试运行时快速加载。

我注意到,如果我取消调试运行,我必须重新加载这些符号,因为我猜如果新引入并突然取消它们会被“清理”。我理解这种流程的核心原理,但在这种情况下,它似乎没有经过深思熟虑。

于 2018-06-26T01:25:47.150 回答
0

转到项目属性->调试->取消选中启用本机代码调试

于 2021-09-04T20:42:17.493 回答
0

在工具->选项->调试->常规中取消选中“为 ASP.NET(Chrome 和 IE)启用 JavaScript 调试”解决了我的情况,无法启动带有预设断点的 VS2017 调试器。

于 2018-01-31T20:15:42.470 回答
0

唯一对我有用的是更改代码类型。

Attach to Process窗口中,我将Attach to:选项更改为Automatically determine the type of code to debug,然后我的断点被命中。

我以前只选择了本代码。

于 2019-10-15T14:30:17.287 回答
-1

我有一个类似的问题,Visual Studio 不断加载符号并卡住了。

原来我在调试选项中添加了一些“命令行参数”,其中一个参数无效(我应该传入一些值)。 在此处输入图像描述

在我删除额外的参数后,它又开始工作了。

于 2020-01-09T05:06:13.847 回答