VisualStudio 加载符号

我在一个 ColdFusion项目上工作了一段时间,至少对我来说,Visual Studio 的行为开始变得奇怪了。

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

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

这个符号加载步骤是必要的吗? 我如何禁用它?

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

我在“模块”窗口中查看了加载了哪些符号,但它什么也没有告诉我。有什么问题吗?

enter image description here

216710 次浏览

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

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

符号意味着您可以将有用的堆栈跟踪信息传递给第三方和系统程序集。您肯定需要在自己的代码中使用它们,但是我认为无论如何都要加载它们。最好的办法是关闭菜单中的任何非本地符号源,如果你正在加载大量不需要调试的系统程序集符号,你可以暂时禁用加载这些符号,以加快调试启动——但是它们通常对已加载很有用。

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

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

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

检查一下这个。

我也遇到过类似的问题。在我的例子中,我将 _ NT _ SYMBOL _ PATH 设置为从 Microsoft Servers 下载,以便在 WinDbg 中使用,当设置为 _ NT _ SYMBOL _ PATH 时,Visual Studio 将使用它,而无法忽略它。移除环境变量解决了我的问题。

对我来说,它似乎与断点有关,正如已接受的答案中所指出的那样。但是,我发现了两个不涉及删除所有断点的变通方法:

  • 重新启动 VisualStudio 似乎可以暂时修复这个问题。
  • 在调试时单击“ X”按钮关闭 VisualStudio 会导致“您想停止调试吗?”消息框弹出; 当这个消息框弹出时,符号以正常速度加载。加载完所有符号后,可以单击“否”取消关闭。

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

然后清洗溶液并重建。

现在看起来工作正常。因此,如果你尝试所有其他列出的东西,它仍然没有什么区别,这些额外的信息位可能会有所帮助..。

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

在我的例子中,VisualStudio 在我的机器上引用光驱的路径中寻找第三方 PDB。如果托盘中没有光盘,Windows 大约需要30秒才会失败,这反过来减慢了 Visual Studio 试图从该位置加载 PDB 的速度。更多的细节可以在我的完整答案中找到: https://stackoverflow.com/a/17457581/85196

只是有个问题。

我通过导航到:

工具 -> 选择-> 正在调试-> 符号

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

例如 微软符号服务器Msdl.microsoft.com/download/symbols

我遇到了同样的问题,甚至在关闭符号加载之后,Visual Studio 中的模块加载速度仍然非常缓慢。

解决方案是关闭防病毒软件(对我来说是 NOD32) ,或者更好的方法是,向它添加异常,这样它就会忽略进程加载程序集的路径(对我来说是 GAC 文件夹和临时 ASP.NET 文件夹)。

我的意见是,

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

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

配置属性/常规/启用到 YES 的托管增量生成

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

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

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

编辑: 最后一个有用

....

配置属性/连接器/调试/将 DEBUG 信息生成为 Yes (/DEBUG)

....

之后,它工作,它加载的符号罚款。 我确信上面的一个或多个方法对我起到了作用(虽然我不确定具体是哪个) ,我只是想让其他人知道并尝试一下。.

和平

你可以试试以下 VisualStudio 调试/加载非常慢的答案:

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

  2. 检查“ Enable Just My Code”旁边的复选标记。

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

  4. 单击“ ...”按钮并在本地计算机上的某个位置创建/选择一个新文件夹来存储缓存的符号。我把我的命名为“符号缓存”,并把它放在文档-> Visual Studio 2012。

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

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

  7. 点击“确定”。

还要尝试删除所有的断点(调试 > 删除所有的断点) ,

另见 : < a href = “ https://social.msdn.microsoft.com/Forums/sqlserver/en-US/557f32b7-eccb-4a4a-87bc-9fb7fa7613a5/”rel = “ noReferrer”> Visual Studio 2015 RC1在加载符号时挂在调试模式

在工具-> 选项-> 调试-> 常规解决了我的问题,无法启动预设断点的 VS2017调试器。

Visual Studio 2017 Debug 符号“ speed-up”选项,假设你还没有疯狂地进行选项定制:

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

1A 和2是最重要的步骤。1B 和1C 只是有用的变化,以帮助您跟踪您的符号。

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

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

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

连接到进程窗口中,我将 附件:选区更改为 自动确定要调试的代码类型,然后命中断点。

我以前只有 本地人代码选择。

我有一个类似的问题,视觉工作室不断载入符号,并卡住了。

我在 Debug 选项中添加了一些“命令行参数”,其中一个参数是无效的(我应该传递一些值)。 enter image description here

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

去项目 Properties-> debug-> 取消选中 启用本机代码调试