JetBrains Rider中断点无法命中?

31

我正在尝试在JetBrains Rider中设置断点,但调试器没有停止。

我确定应用程序应该到达我要在其中断点的代码,因为更改字符串文字出现在程序中。

我已完全重新安装了所有JetBrains程序(擦除设置)。 我也尝试了这个线程中的每个答案:debugging时断点没有被触发,但没有成功。

此错误不会在Visual Studio中发生,但会在Rider中的任何项目中发生。

我的另一个PC上使用的Rider副本也不会出现此问题。

我感谢任何帮助,谢谢!

12个回答

57

还有一个小细节:我离开后重新开始使用 Rider,按下的是“播放”(三角形)按钮而不是带有一张虫子图片的按钮。

(哎呀!)


19
对于那些像我一样从VS切换过来的人,需要注意:F5键并不是用来启动调试,它只是运行代码;即使使用了VS的快捷键映射也是如此。 - janw
我也在做同样的事情。谢谢。 - user955485
5
2023年仍在挽救生命。 - Jano du Toit
Rider表示它从VS导入了关键映射。但它仍然保留了一些“标志性”的关键映射。 - undefined

10

对于 .Net Framework 项目:

这可能是因为 Rider 将调试器连接到了与 IIS 使用的进程不同的进程。

  • 打开 Rider 菜单上的“运行”(Run)并单击“附加到进程”或按下 ctrl+alt+F5 键。
  • 输入 w3wp,这将找到所有正在运行 IIS 的进程。如果找到多个进程,则可以悬停在它们上面以查看哪个应用程序池与该进程相关联。
  • 单击要附加调试器的进程。
  • 现在应该会触发断点。

请确保使用 Rider 运行项目时提供给您的 URL(http://localhost:XXXX),因为 Rider 使用的 URL 可能与您为 IIS 设置的主机名不同。


6

我找到了问题所在。

自Rider 2018.1.3起,您运行的解决方案必须与您正在使用的Rider副本位于同一磁盘上。

此问题在JetBrains支持中有参考此处

您可以通过将解决方案移动到相同驱动器或重新安装Rider来暂时解决此问题。


1
这也是我的问题,但在VS2019中调试起作用了 - 在Rider中,当悬停在禁用的断点上时,您会看到一个消息,例如在D:\ Folder \ Code \ Script.cs中找不到模块。将项目移动到与rider相同的驱动器上,清除解决方案,重新启动Windows,从Rider运行并成功命中断点。还要确保您的Unity项目构建设置已启用“开发模式”和“脚本调试”。 - Alex
2023.1.1版本中是否仍然如此? - MaxP
看起来不是这样的,我的Rider个人副本在一个不同的硬盘上,大多数解决方案都可以调试(运行Rider 2023.1)。 - Jessica

3
我之前的做法是:
  1. 打开解决方案
  2. 设置一些断点
  3. 在 Rider 中点击“bug”按钮(紧挨着播放按钮)
  4. Chrome 会自动打开一个指向我的服务的 URL
  5. 服务预期能够正常工作,但断点无法生效
  6. 停止服务
  7. 修改一些代码
  8. 启动服务
  9. 从第4步刷新 Chrome 窗口
  10. 我可以在 Chrome 中看到修改后的内容。但断点没有触发。
现在我改变的唯一一件事是,在第2步后我现在做了以下操作:

运行 --> 附加到本地进程... --> w3wp

之后,我只需按照以前的步骤进行,但现在断点确实被触发了...
参考:Refrence

3
如果您正在使用.NET Core和IIS,请确保应用程序池在基本设置中的“.NET CLR版本”下具有“无托管代码”选项:

enter image description here


2
对于在Xamarin Android项目中遇到同样问题的任何人。 对于我来说,在Android项目中断点是有效的,比如在主活动中,但在共享项目中不起作用。
我是这样解决的: 进入您的android.csproj文件并进行编辑。搜索您的构建目标并检查 true 如果这是true,则其他模块中的断点不起作用。 将其设置为false,或者更好的方法是完全删除此行。

1
关于Jessica上面的回答,似乎在Rider中使用系统绝对路径(即/System/Volumes/Data/Users/...)打开解决方案会像在另一个驱动器上一样。在自己折腾了大约四个小时后,我创建了一个新的解决方案,并将解决方案目录从系统路径更改为/Users/...,然后将我的项目复制到这个新的解决方案中,这修复了断点,并且现在从Rider欢迎屏幕打开项目时显示解决方案目录为相对路径(~/Users/...)。

1
我也遇到过这个问题,原因是csproj中有一个虚假的<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>设置。删除此设置后可以恢复调试功能。

1

这是另一种解决方案(适用于您或其他遇到此问题的人):

当您的配置或launchSettings中有"COMPlus_EnableDiagnostics": "0"时,您也无法触发断点。


这个设置到底在哪里啊? - Allen
可以通过环境变量进行设置。appsettings.json、launchsettings 等文件也可用于配置。 - chrjs

1
清理和重新构建解决方案,然后删除并重新添加断点对我很有帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接