我正在研究ColdFusion项目一段时间了,至少Visual Studio开始对我来说很奇怪 .
我观察到,当我开始调试时,它构建了项目,它开始部署,部署完成,它开始为我的项目加载符号 .
但它很慢,我不知道为什么它开始这么做 . 我可以做些什么?
这个符号加载步骤是否必要?我该如何禁用它?
在工具 - >选项 - >调试 - >符号对话框中,没有添加符号文件(.pdb)位置 . 我在下面的字段中指出了我的项目的调试目录,并选中了“仅在符号为......时搜索上述目录”复选框 . 如何设置此对话框以关闭符号加载?
我在模块窗口中查看了哪些符号已加载,但它对我没有任何说明 . 问题是什么?
14 回答
就我而言,Visual Studio正在寻找路径上的第三方PDB,在我的机器上,它引用了一个光驱 . 如果没有托盘中的光盘,大约需要约30个窗口才能失败,这反过来会减慢Visual Studio,因为它试图从该位置加载PDB . 更多细节可在我的完整答案中找到:https://stackoverflow.com/a/17457581/85196
调试 - >删除所有断点(http://darrinbishop.com/blog/2010/06/sharepoint-2010-hangs-after-visual-studio-2010-f5-debugging)之后,您可以再次使用它们,但只执行一次 . 它也将删除某种"invalid"断点,然后加载符号将再次快速 . 我好几天都在追问这个问题:( .
加载缓慢的另一个原因是,如果您在调试选项中禁用了“仅启用我的代码” . 要启用此功能,请转到:
确保选中此项 .
在工具,选项,调试,符号中配置 .
您可以观察输出窗口(视图,输出)以查看它通常在做什么 . 如果它真的很慢,可能意味着它正在击中一个符号服务器,可能是微软的,下载丢失的符号 . 对于每次启动时都找不到的每个文件,这需要三次HTTP命中 - 有时您可以在底部的状态栏或例如提琴手 . 您可以在调试时查看调试,Windows,模块中哪些模块已加载符号 .
符号表示您将有用的堆栈跟踪信息提供给第三方和系统程序集 . 你肯定需要它们用于你自己的代码,但我认为无论如何都会加载它们 . 您最好的办法是关闭该菜单中的任何非本地符号源,如果您为系统程序集加载大量符号而不需要调试,则可以暂时禁用加载这些符号以加快调试开始 - 但它们通常对装载很有用 .
刚出现这个问题 .
我通过导航到以下方法修复了它:
Tools - > Options - > Debugging - > Symbols
然后取消选中 Symbol file (.pdb) locations 的所有非本地来源
例如 Microsoft Symbol Servers 和 msdl.microsoft.com/download/symbols
我遇到了类似的问题 . 在我的情况下,我已经设置了_NT_SYMBOL_PATH从Microsoft服务器下载以便在WinDbg中使用,看起来在设置时,Visual Studio将使用它而无法忽略它 . 删除该环境变量解决了我的问题 .
对我来说,它似乎与断点相关,如公认的答案所示 . 但是,我找到了两个不涉及删除所有断点的变通办法:
重新启动Visual Studio似乎暂时修复它 .
在调试时单击"X"按钮关闭Visual Studio会弹出"Do you want to stop debugging?"消息框;当此消息框启动时,符号以普通速度加载 . 加载所有符号后,可以单击"No"取消关闭 .
刚遇到这个问题 . 删除断点不起作用,或者至少不是单独使用 . 在此失败后我没有工具>选项>调试>符号和“空符号缓存”
然后清理解决方案并重建 .
现在似乎工作正常 . 因此,如果您尝试列出所有其他内容,并且它仍然没有区别,那么这些额外的信息可能会有所帮助......
reference:social.msdn.microsoft.com
以上参考文献,我找到了这个解决方案,它以某种方式总结了上述答案 .
转到工具 - >选项 - >调试 - >常规
检查“启用我的代码”旁边的复选标记 .
转到工具 - >选项 - >调试 - >符号
单击“...”按钮,在本地计算机上的某处创建/选择一个新文件夹以存储缓存的符号 . 我将其命名为“符号缓存”并将其放在Documents - > Visual Studio 2012中 .
单击“加载所有符号”并等待从Microsoft的服务器下载符号,这可能需要一段时间 . 请注意,“加载所有符号”按钮仅在调试时可用 .
UNCHECK“Microsoft Symbol Servers”旁边的复选标记,以防止Visual Studio远程查询Microsoft服务器 .
单击“确定” .
还尝试删除所有断点(Debug> Delete all the breaks),
我有同样的问题,甚至在转动之后符号加载,Visual Studio中的模块加载速度非常慢 .
解决方案是关闭防病毒软件(在我的情况下是NOD32)或更好的是,为它添加例外,以便它忽略进程加载程序集的路径(在我的例子中它是GAC文件夹和临时ASP .NET Files文件夹) .
我的2美分,
尝试在x64发布模式(CPU采样)中获取(Visual Studio 2013)诊断报告时遇到类似问题,并且在加载所需dll文件的符号时,我的可执行文件的符号将无法加载 .
我没有在符号菜单中更改任何内容,而是在解决方案资源管理器中的可执行文件的属性页面中进行了一些更改,即
配置属性/常规/启用托管增量构建为YES
配置属性/调试/合并环境为NO
配置属性/ C / C /启用浏览信息为YES(/ FR)
配置属性/链接器/启用增量链接为YES(/ INCREMENTAL)
EDIT : This last one does the trick
....
配置属性/链接器/调试/ Generate Debug Info to Yes (/DEBUG)
....
之后,它工作,它加载符号很好 . 我确信上面的一个或多个对我有用(虽然我不确定到底是哪个),只是想让其他人知道并试试这个......
和平
尝试右键单击其中一个断点,然后选择“位置” . 然后选中“允许源代码与原始版本不同”复选框
取消选中“在工具 - >选项 - >调试 - >常规中启用”对ASP.NET(Chrome和IE)启用JavaScript调试“解决了我的情况,不可用,启动具有预设断点的VS2017调试器 .
Visual Studio 2017调试符号“加速”选项,假设您已经没有疯狂选择自定义:
在
Tools -> Options -> Debugging -> Symbols
一个 . 启用"Microsoft Symbol Server"选项
湾点击"Empty Symbol Cache"
C . 将符号缓存设置为易于查找的位置,例如
C:\dbg_symbols
或%USERPROFILE%\dbg_symbols
重新运行Debug之后,让它从开始到结束或尽可能合理地加载所有符号一次 .
1A和2是最重要的步骤 . 1B和1C只是帮助您跟踪符号的有用更改 .
在您的应用程序至少加载了所有符号一次并且调试没有提前终止之后,应在下次调试运行时快速加载这些符号 .
我注意到如果我取消调试运行,我必须重新加载这些符号,因为我猜他们已经“清理”了如果新引入并突然取消 . 我理解这种流程的核心理由,但在这种情况下似乎很难想到 .