Dotnet 调试器即使对于简单的控制台应用程序也不会遇到断点

问题描述 投票:0回答:1

我的公司正在为我们提供用于 .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 后,如果我检查模块窗口,就会发现本机模块已正确加载。由于我已启用从符号服务器下载,因此它们的符号会加载以下消息:“加载的符号没有源信息”。 然而,托管符号有一些问题。首先,它们显示一条错误消息:“模块未在默认加载地址加载”。至于符号,它说:“本机调试器跳过了加载托管模块的符号。”缺少“加载符号”按钮。我不知道发生了什么,但对我来说,本机调试器似乎正确启动,但托管调试器却没有正确启动。

如果我更改代码,它会编译,并且我可以在正在运行的应用程序中看到更改。

c# .net visual-studio-2022
1个回答
0
投票

有很多列表可以检查所有内容是否配置正确。这是我的清单。也许您已经检查过其中一些。

  1. 检查以确保您不是处于发布状态而是处于调试状态。
  • 调试时:尝试通过右键单击项目 > 重建来重建项目。如果这不起作用,请尝试清理项目(右键单击项目 > 清理)。
  1. 如果这不起作用,请检查此:
  • 鼠标右键单击您的项目
  • 选择【属性】(快捷键:Alt + Enter)
  • 选择[构建]选项卡
  • 确保选中[定义调试常量]和[定义跟踪常量]
  • 确保[优化代码]未选中
  1. 点击Build标签页底部的【高级】按钮
  • 确保[调试信息:]设置为[完整]生成.pdb文件,这些是调试符号
  • 点击【确定】并重建项目
  1. 取消选中“工具”=>“选项”=>“调试”=>“常规”下的“仅启用我的代码”选项

  2. 当鼠标点击的断点无效时,可以在vs中执行以下操作: Debug --> 删除所有断点 Debug --> New Breakpoint --> Function Breakpoint,然后输入要添加的函数名称一个断点

  3. 删除解决方案文件“.sln”旁边的文件夹“.vs”以及文件夹“debug”中的所有文件并重建

© www.soinside.com 2019 - 2024. All rights reserved.