我的公司正在为我们提供用于 .NET 开发的新虚拟机,我正在尝试设置它们。问题是,dotnet 调试器似乎不起作用,我不明白为什么。
一些规格: 操作系统:Windows 10 22H2 VS:Visual Studio Professional 2022 17.8.3,工作负载明智的c#和c++桌面开发,以及MAUI已安装 dotnet SDK:8.0.100 和 8.0.403
当我创建任何 C# 项目时,例如一个简单的
Hello World!
控制台应用程序,该项目会正确编译并运行,但不会遇到断点。启动后,断点将被停用并显示错误消息:“当前不会命中断点。此文档尚未加载任何符号”
我也尝试使用 dotnet CLI 从 Visual Studio Code 进行构建和调试。断点显示相同的错误消息。
错误消息通常意味着没有找到 .pdb 文件,但是检查文件系统后发现 .pdb 文件就在那里,就在 .exe 文件旁边。更奇怪的是,如果我在应用程序运行时检查“调试”->“Windows”->“模块”窗口,则那里不会出现任何模块。模块窗口只是空的。
我已经多次验证,我处于调试模式。我也尝试过使用 AnyCpu、X64 和 X86 进行构建,没有任何改变。
我已经验证,优化代码已关闭(即使对于发布)。 我已打开“抑制模块加载时的 jit 优化”,但没有帮助。 我尝试过“仅启用我的代码”,无论是关闭还是打开都不起作用。
我尝试过“清理”->“重建”,我尝试过删除 obj 和 bin 文件夹,我尝试过删除 .vs 文件夹。我尝试过重新启动 Visual Studio,也尝试过重新启动虚拟机。他们都没有工作。
我尝试在 C 和 D 驱动器上创建项目。没有区别。
我尝试在“项目属性”->“构建”->“常规”中更改调试符号。没有区别。
Debugger.IsAttached
返回 false。 Debugger.Launch()
和 Debugger.Break()
使应用程序崩溃,并显示错误代码,指出未找到调试器((进程 8476)退出,代码为 -2147483645。)。
我应该提到,Visual Studio 看起来好像调试器已经启动,诊断工具出现,我可以“分离”调试器等。
我尝试通过“调试属性”->“启用本机代码调试”来启用混合模式调试。将其设置为 true 后,如果我检查模块窗口,就会发现本机模块已正确加载。由于我已启用从符号服务器下载,因此它们的符号会加载以下消息:“加载的符号没有源信息”。 然而,托管符号有一些问题。首先,它们显示一条错误消息:“模块未在默认加载地址加载”。至于符号,它说:“本机调试器跳过了加载托管模块的符号。”缺少“加载符号”按钮。我不知道发生了什么,但对我来说,本机调试器似乎正确启动,但托管调试器却没有正确启动。
如果我更改代码,它会编译,并且我可以在正在运行的应用程序中看到更改。
有很多列表可以检查所有内容是否配置正确。这是我的清单。也许您已经检查过其中一些。
取消选中“工具”=>“选项”=>“调试”=>“常规”下的“仅启用我的代码”选项
当鼠标点击的断点无效时,可以在vs中执行以下操作: Debug --> 删除所有断点 Debug --> New Breakpoint --> Function Breakpoint,然后输入要添加的函数名称一个断点
删除解决方案文件“.sln”旁边的文件夹“.vs”以及文件夹“debug”中的所有文件并重建