gpt4 book ai didi

c# - 如何诊断 "The instruction at 0x......... referenced memory at 0x00000000"

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:46 24 4
gpt4 key购买 nike

我负责已知会引发此错误的应用程序。

0x09537333 处的指令引用了 0x00000000 处的内存。无法读取内存。

很遗憾,我无法自己复制它。

我的问题是,我该如何诊断/调试它?我有违规指令的内存位置,但我是否可以追溯到我的代码中的一行?即 0x09537333 是指相对于我的应用程序的位置还是在操作系统(Windows 7 Embedded)中?

有没有其他方法可以获取有关此错误的更多信息?在我的代码中是否有任何已知的常见原因需要我注意?

最佳答案

我已经解决了这个问题 - 这里有一些信息,以防其他人遇到同样的问题。

做了更多的研究,发现这个访问冲突错误可能是由调用非托管函数/代码(例如用 C++ 编写的 dll)时的错误引起的 -try...catch 通常不会捕获此错误,但如果将其添加到 app.config 文件中,则会捕获此错误:

<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true" />
</runtime>

这是一种可能性。

但实际上在我的例子中,错误是由一个线程在一个表单上运行异常长时间引起的。

表单在完成之前就被关闭了。在线程的末尾,它试图隐藏表单上的一个按钮。由于表单现在已被处置,因此引发了访问冲突错误。

我通过解决导致线程运行这么长时间的问题来修复它,但也是“以防万一”,添加了

if (this.IsDisposed)
{
return;
}

...在按钮处理之前。

关于c# - 如何诊断 "The instruction at 0x......... referenced memory at 0x00000000",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38743615/

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