Visual Studio 2008在调试时读取或写入受保护的内存

时间:2009-08-03 20:59:11

标签: visual-studio debugging memory-corruption

在一台全新的Vista机器上,每当我尝试以调试模式启动项目时,我都会立即收到以下错误:

  

尝试读取或写入受保护的   记忆。这通常是一个迹象   其他记忆已经腐败。

我不买“其他内存已损坏”部分消息。我认为错误可能与我刚搬到新机器的项目有关,但即使是一个全新的空白项目也表现出相同的行为。当我开始没有调试时,我没有收到任何消息。

我在线阅读了一些修复内容:

  1. 2007年有一个针对.NET 2.0的服务包解决了这些问题。我在3.5 SP1,所以我怀疑这是问题。
  2. 显式编译x86,因为你引用的DLL是32位的,你会遇到问题。我正在使用Core 2 Duo,但运行Vista 32位,所以这应该不是问题,对吧? (另外,在测试项目中,没有DLL。)
  3. 在调试下,取消选中“在模块加载时抑制JIT优化”。没有为我做任何事。
  4. 擦除整个操作系统并重新安装VS2008。 (这显然对一个孩子有用。)我现在没时间做这件事。
  5. 我可以在没有调试的情况下做我需要做的事情,但我肯定想要恢复它。如果有人在这里可以想到为什么会这样,请告诉我。感谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试的另一件事是以下 IF 它是一个Web项目。在web.config文件中指定以下内容:

<system.web>

<trust level="Full"/>

</system.web>

虽然这不太理想,如果它有效,那么你可以开始缩小问题范围。您给出的错误是一个非常一般的错误,也可能是由DEP(数据执行保护)引起的。根据我的理解,那些通常仅在Windows Server 2003上使用。如果您使用的是Windows2003,则可以执行以下操作来禁用DEP:

  1. 右键单击“我的电脑”,然后单击“属性”
  2. 单击“高级”选项卡
  3. 单击“效果”部分中的“设置”按钮
  4. 确保选中标记为“为我选择的所有流程和服务启用DEP”的单选按钮
  5. 点击列表底部的添加
  6. 浏览到要运行的执行文件并选择它
  7. 确保选中列表中可执行文件名称旁边的复选框,然后单击“确定”
  8. 最后一个选项是查询数据库时也可能出错。在这种情况下,您需要正确检查oledb参数的query / oledb命令参数类型/值/顺序。

    我希望其中一种解决方案可以帮助您!祝你好运!