ChatGPT解决这个技术问题 Extra ChatGPT

Visual Studio 加载符号

我现在正在从事 ColdFusion 项目一段时间,Visual Studio 至少对我来说开始表现得很奇怪。

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

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

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

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

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

https://i.stack.imgur.com/SHCgB.png

我已经尝试了线程中的每个答案,但没有运气。
通常,符号应该被缓存并且应该几乎不需要时间来加载,唯一一次你会注意到符号加载很慢是如果符号是从非常慢的微软符号服务器加载的,例如(并不总是很慢,但没有慢少),因此尝试解决此问题的一种好方法是删除符号缓存,只需转到 Debug -> Options -> Debugging -> Symbols 并单击空符号缓存,如果这不起作用可能完全是另一个问题,希望这对看到这个问题已有 3 年历史的人有所帮助(:

H
Herman Cordes

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


Visual Web Developer 2010 Express 用户可以按 CTRL+SHIFT+F9 并提示“您要删除所有断点吗?”会出现。您至少需要一个活动断点(不确定有问题的背景断点是否计数,因此设置一个)。谢谢!现在快很多了...
确实这行得通!极好的!有没有人已经向微软报告了这个明显的错误?
当我尝试使用 CTRL + B 手动添加断点然后输入函数名称并忽略 IntilliSense 无法找到函数的警告时,这发生在我身上。
我在 VS2015 中遇到了同样的问题,但我找不到“删除所有断点”选项,知道如果它存在的话他们把它移到哪里了吗?
Ctrl+Q(或点击右上角的“快速启动”框)并输入“delete”(或“breakpoints”或“delete all breakpoints”:))
n
nietras

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

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

确保选中此项。


“仅我的代码”选项在 Visual Studio 的某些 Express 版本的“选项”对话框中不可用(但它在 Visual C# 2010 Express 中),但可以通过其他方式进行更改:How do I disable 'Just My Code' in Visual Basic 2005 Express?
这是为我修复它的那个......不是“删除所有断点”的答案。
这几乎是 Visual Studio 中最糟糕的选择。禁用符号加载要好得多,这样您仍然可以看到异常抛出和只是缺少符号的堆栈帧。 (只是一些难以阅读的数字而不是名称)。当然,我通常处理网站代码,所以我下面有很多 IIS 可能会失败。通常只需取消选择 Microsoft(和所有远程)符号服务器作为数据源即可。
R
Rup

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

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

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


在工具 -> 选项 -> 调试 -> 符号对话框中,没有添加符号文件 (.pdb) 位置。我在下面的字段中指向了我的项目的调试目录,并选中了“仅当符号为 .... 时才搜索上面的目录”复选框。我不知道我应该如何设置这个对话框来关闭符号加载。
嗯,那我就不知道了。您需要为自己的代码加载符号来调试它,所以我认为您不想完全关闭它。我想然后我会查看“模块”窗口以查看哪些符号已加载,找出您实际需要的符号,然后可能从符号缓存中删除您不想要的符号缓存中的 .pdbs?
检查“使用微软符号服务器”,运行一次代码,然后所有符号都在缓存中。您现在可以取消选中该框以提高速度。
在工具 -> 选项 -> 调试 -> 符号中禁用 Microsoft 符号服务器为我解决了这个问题。在我等待 30 秒调试开始之前。现在只有一秒钟左右。
N
Noelkd

刚遇到这个问题。

我通过导航到修复它:

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

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

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


j
jcarle

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


这也为我解决了这个问题(我猜赞成票的数量少是由于设置此变量的人数少......)谢谢!
同样在这里。我以为我可以从符号中取消选中它,但是不,必须删除/重命名环境变量。
K
KyleMit

您可以尝试以下对 Visual Studio debugging/loading very slow 的回答:

转到工具 -> 选项 -> 调试 -> 常规 检查“仅启用我的代码”旁边的复选标记。转到工具 -> 选项 -> 调试 -> 符号 单击“...”按钮并在本地计算机上的某处创建/选择一个新文件夹以存储缓存的符号。我将我的命名为“符号缓存”并将其放入 Documents -> Visual Studio 2012。单击“加载所有符号”并等待从 Microsoft 的服务器下载符号,这可能需要一段时间。请注意,加载所有符号按钮仅在调试时可用。取消选中“Microsoft 符号服务器”旁边的复选标记,以防止 Visual Studio 远程查询 Microsoft 服务器。单击“确定”。

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

另请参阅Visual Studio 2015 RC1 Hangs in Debug mode while loading symbols


C
Cameron

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

重新启动 Visual Studio 似乎可以暂时修复它。

在调试时单击“X”按钮关闭 Visual Studio 会导致“您要停止调试吗?”弹出消息框;当此消息框启动时,符号以正常速度加载。加载所有符号后,您可以单击“否”取消关闭。


感谢您提供这种疯狂的解决方法(带有“您要停止调试”消息)。我先尝试了其他答案,但到目前为止,只有红色的“X”和“你想要……”的技巧有帮助。谢谢你,我失去理智了……
@que:呵呵,不客气!我偶然发现了它。似乎 VS 有一个单独的消息循环,它进入该模式对话框,所以每当它无缘无故地出现缓慢时,弹出对话框有时会有所帮助:-)
S
SteveL

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

然后清洗溶液并重建。

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


C
Community

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


t
twoflower

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

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


u
user3374479

我的 2 美分,

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

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

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

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

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

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

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

……

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

……

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

和平


J
Jeremiah Anthony

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


k
kayleeFrye_onDeck

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

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

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

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

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


A
Angel Dinev

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


a
apohl

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

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

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


h
ha a

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


H
Hainan Zhao

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

https://i.stack.imgur.com/fW1Vk.png

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