Visual Studio加载符号

时间:2010-07-31 10:34:06

标签: visual-studio debugging debug-symbols

我正在研究ColdFusion项目一段时间了,至少Visual Studio开始对我表现得很奇怪。

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

但它很慢,我不知道为什么它开始这么做。我可以做些什么?

此符号加载步骤是否必要?我该如何禁用它?

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

我在模块窗口中查看了哪些符号已加载,但它对我没有任何说明。有什么问题?

enter image description here

16 个答案:

答案 0 :(得分:258)

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

答案 1 :(得分:116)

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

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

确保选中此项。

答案 2 :(得分:39)

在工具,选项,调试,符号中配置。

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

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

答案 3 :(得分:35)

刚出现这个问题。

我通过导航到:

修复了它

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

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

e.g。 Microsoft Symbol Servers msdl.microsoft.com/download/symbols

答案 4 :(得分:23)

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

答案 5 :(得分:10)

reference:social.msdn.microsoft.com

上面的参考文献,我发现这个解决方案是以上答案的总结。

  1. 转到工具 - >选项 - >调试 - >一般

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

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

  4. 点击" ..."按钮并在本地计算机上的某处创建/选择一个新文件夹来存储缓存的符号。我将我的名字命名为#34;符号缓存"并把它放在文件 - > Visual Studio 2012。

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

  6. 取消勾选" Microsoft Symbol Servers"旁边的复选标记。防止Visual Studio远程查询Microsoft服务器。

  7. 点击"确定"。

  8. 还尝试删除所有断点(Debug>删除所有断点),

答案 6 :(得分:6)

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

  • 重新启动Visual Studio似乎暂时解决了这个问题。
  • 在调试时单击“X”按钮关闭Visual Studio会导致“您要停止调试吗?”弹出消息框;当此消息框启动时,符号以普通速度加载。加载完所有符号后,您可以单击“否”取消关闭。

答案 7 :(得分:5)

刚遇到这个问题。 删除断点不起作用,或者至少不是单独使用。 在此失败之后,I Went Tools>选项>调试>符号和“空符号缓存”

然后清理解决方案并重建。

现在似乎工作正常。因此,如果您尝试列出所有其他内容,并且它仍然没有区别,那么这些额外的信息可能会有所帮助......

答案 8 :(得分:2)

在我的情况下,Visual Studio正在寻找路径中的第三方PDB,在我的机器上引用了光驱。如果没有托盘中的光盘,大约需要约30个窗口才能失败,这反过来会降低Visual Studio,因为它试图从该位置加载PDB。我在这里的完整答案中提供了更多详细信息:https://stackoverflow.com/a/17457581/85196

答案 9 :(得分:2)

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

解决方案是关闭防病毒软件(在我的情况下是NOD32)或者更好的是,为它添加例外,以便它忽略进程加载程序集的路径(在我的例子中它是GAC文件夹和Temporary ASP.NET Files文件夹。)。

答案 10 :(得分:2)

我的2美分,

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

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

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

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

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

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

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

<强> ....

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

<强> ....

之后,它工作,并加载符号罚款。 我确信上面的一个或多个对我有用(虽然我不确定到底是哪个),只是想让别人知道并试试这个......

和平

答案 11 :(得分:1)

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

答案 12 :(得分:0)

取消选中&#34;为ASP.NET启用JavaScript调试(Chrome和IE)&#34;在工具 - &gt;选项 - &gt;调试 - &gt;一般解决我的案例不可用,启动带有预设断点的VS2017调试器。

答案 13 :(得分:0)

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

  1. Tools -> Options -> Debugging -> Symbols
    一种。启用“ Microsoft Symbol Server”选项
    b。点击“空符号缓存”
    C。将符号缓存设置为易于查找的位置,例如C:\dbg_symbols%USERPROFILE%\dbg_symbols
  2. 重新运行Debug之后,让它从头到尾或尽可能合理地加载一次所有符号。

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

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

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

答案 14 :(得分:0)

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

附加到进程窗口中,我将附加到:选择更改为自动确定要调试的代码类型,然后将断点被击中。

我以前只选择了本地代码。

答案 15 :(得分:-1)

我遇到了类似的问题,Visual Studio不断加载符号并被卡住。

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

删除多余的参数后,它将再次开始工作。

相关问题