一个C#桌面应用程序(在Visual Studio Express版上)工作了,但5秒钟后就不工作了。

我尝试了以下方法:

确保在所有程序集上设置了调试配置、调试标志和完整的调试信息。从我的整个计算机中删除所有bin和obj文件夹以及与项目相关的所有DLL文件。从头开始重新创建导致问题的项目。重新启动。

我在解决方案中有两个Windows窗体项目。其中一个加载调试信息,另一个不加载。它们都引用了我试图在项目文件中以完全相同的方式获取调试信息的程序集。有什么想法吗?


我想在这里补充一点,当我回来回顾这个问题时,主要是为了我自己,即在加载程序集之前不会加载符号,并且在需要时才会加载程序集。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,不会加载符号(并且它将显示断点未命中)。


当前回答

一旦到达断点或使用“调试”>“全部中断”,请使用“调试>Windows”>“模块”开始调试。您将看到加载到流程中的所有程序集的列表。找到要获取其调试信息的对象。在其上单击鼠标右键,然后选择“符号加载信息”。您将看到一个对话框,其中列出了它在其中查找程序集的.pdb文件的所有目录。根据实际的.pdb位置验证该列表。确保它没有找到旧的。

在正常项目中,IDE应始终将程序集及其.pdb文件复制到与.exe相同的文件夹中,即项目的bin\Debug文件夹中。如果您一直在玩GAC,请确保将其从GAC中移除。

其他回答

一旦到达断点或使用“调试”>“全部中断”,请使用“调试>Windows”>“模块”开始调试。您将看到加载到流程中的所有程序集的列表。找到要获取其调试信息的对象。在其上单击鼠标右键,然后选择“符号加载信息”。您将看到一个对话框,其中列出了它在其中查找程序集的.pdb文件的所有目录。根据实际的.pdb位置验证该列表。确保它没有找到旧的。

在正常项目中,IDE应始终将程序集及其.pdb文件复制到与.exe相同的文件夹中,即项目的bin\Debug文件夹中。如果您一直在玩GAC,请确保将其从GAC中移除。

我有一个blazor webassembly项目,从答案中几乎尝试了所有方法,但都没有奏效,解决方案是使用Chrome而不是Firefox,并且达到了断点。blazor-webassembly的文档中也有以下内容

Visual Studio需要“工具”>“选项”>“调试”>“常规”中的“为ASP.NET(Chrome、Edge和IE)启用JavaScript调试”选项。这是Visual Studio的默认设置。如果调试不起作用,请确认已选择该选项。

我的问题是aspx、aspx.vb和aspx.designer.vb文件导入错误(可能是一个接一个地导入到项目中)。

断点位于aspx.vb中,但无法访问,并显示此问题的警告。

解决方案是删除这三个文件并再次导入它们。现在我可以到达断点了。

有人在Blazor项目的launchSettings.json中将“launchBrowser”:true更改为“launchBrowser”:false。

它确实启动了浏览器,但没有导致断点。所以我不确定launchBrowser到底做什么。

我花了4个多小时才发现!将其添加到此处,以防可能会节省某人一些时间!

检查以确保您不是处于发布状态,而是处于调试状态。

调试时:

首先尝试通过右键单击项目>重建来重建项目如果这不起作用,请尝试清理项目(右键单击项目>清理)

如果不起作用,请检查:

右键单击项目选择[财产]选择[构建]选项卡确保选中[Define DEBUG常量]和[Define TRACE常量]确保未选中[优化代码]单击Build(构建)选项卡底部的[Advanced](高级)按钮确保[Debug Info:]设置为[full]单击[确定]并重建项目;-)

(步骤7生成.pdb文件,这些是调试符号)