gpt4 book ai didi

c# - Visual Studio 无法使用调试器 (AccessViolationException)。随机顺序执行的代码

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:57 25 4
gpt4 key购买 nike

截至今天,我无法再使用 Visual Studio 调试任何 c# 代码。如果我使用调试器,可以命中断点,但一旦执行暂停,麻烦就来了。按 Step Into 或 Continue 通常会生成一个 AccessViolationException,说明内存已损坏并终止当前请求。如果我随后运行进一步的 Web 请求,我将得到一个 SEHException(发生在未知模块中)。

更奇怪的是,如果 AccessViolationException 没有触发,显示下一条语句的程序计数器会随机跳转。然后代码以随机顺序执行! (直到它崩溃)。

如果没有命中断点,那么应用程序将在 Debug模式下正常运行(即使附加了调试器)。

我确信这不是代码问题。我实际上可以使用新项目和以下代码重现访问冲突:

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello world");
Console.WriteLine("Access violation"); // This will throw if breakpoint set
}
}

删除了VS缓存,删除了.suo,清理了,试了安全模式。一个可能的怀疑是这是在一台 Windows 10 预览版机器上,上周有一个更新。我真的不确定还有什么地方可以用这个来确认它,或者在不重新镜像机器的情况下修复它。

最佳答案

Any CPU 更改为仅 x64 在我的“Hello World”测试项目中为我解决了这个问题。

为了开始我原来的项目,这实际上是一个网络项目,我不得不采取一些额外的步骤。

  1. 将项目中的所有库更新为 x64,而不仅仅是 Web 项目。
  2. 在 VS2013 中启用 64 位 IIS express 工具 > 选项 > 项目和解决方案 > Web 项目 > 使用 64 位 IIS ...
  3. 通过控制面板(打开或关闭 Windows 功能)安装Internet Information Services Hostable Web Core。在执行此操作之前,我会在以 HttpException (0x80004005) 形式启动 64 位 Web 项目时遇到错误:指定的参数超出了有效值的范围。安装 HWC 修复了它。

仍然不知道为什么会发生这种情况,但至少我可以再次调试项目。

关于c# - Visual Studio 无法使用调试器 (AccessViolationException)。随机顺序执行的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29356236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com