C# 如何诊断;0x处的指令。。。。。。。。。0x00000000处的引用内存;
我负责一个已知会抛出此错误的应用程序C# 如何诊断;0x处的指令。。。。。。。。。0x00000000处的引用内存;,c#,.net,memory,runtime-error,C#,.net,Memory,Runtime Error,我负责一个已知会抛出此错误的应用程序 0x09537333处的指令引用了0x00000000处的内存。无法读取内存。 不幸的是,我自己无法复制它 我的问题是,我如何诊断/调试它?我有出错指令的内存位置,但我可以追溯到代码中的一行吗?i、 e.0x09537333指的是相对于我的应用程序的位置还是在操作系统(嵌入式Windows 7)中 是否有其他方法获取有关此错误的进一步信息?在我的代码中是否有任何已知的常见原因需要注意?我已经解决了这个问题-以下是一些信息,以防其他人有相同的问题 进行了更多的
0x09537333处的指令引用了0x00000000处的内存。无法读取内存。
不幸的是,我自己无法复制它
我的问题是,我如何诊断/调试它?我有出错指令的内存位置,但我可以追溯到代码中的一行吗?i、 e.0x09537333
指的是相对于我的应用程序的位置还是在操作系统(嵌入式Windows 7)中
是否有其他方法获取有关此错误的进一步信息?在我的代码中是否有任何已知的常见原因需要注意?我已经解决了这个问题-以下是一些信息,以防其他人有相同的问题 进行了更多的研究,发现此访问冲突错误可能是由调用非托管函数/代码(例如,用C++编写的dll)中的错误引起的
试试看。。。catch
通常不会捕获此错误,但如果将此错误添加到app.config文件中,则会捕获此错误:
<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true" />
</runtime>
…在按钮处理之前。每当0x00000000是无法读取的地址时,您拥有的是空指针解引用。您可以通过以下方法解决此问题:
右键单击“我的电脑”图标,然后前往“高级” 选项卡,然后单击可在“性能”下找到的设置 然后再次转到“高级”选项卡,并单击下面的“更改”按钮 虚拟内存。完成这些更改后,您可以重新启动计算机 如果它消失了,看看问题所在
您将无法从中找到错误原因-您需要在exe中包含pdb文件,以便在发生崩溃时获得堆栈跟踪。您的应用程序是否生成了小型转储文件?如果是这样的话,您可以将其加载到WinDbg并计算出来,但这是一个相当复杂的操作。
0x00000000
为空:位于0x09537333
的代码访问空对象或其他内容;通常起始地址是0x00400000
(选中此项,Windows很可能会使用另一个),因此RVA(相对虚拟地址)是0x09137333
(前提是起始地址是0040:0000
)然后使用pdb或其他调试信息将RVA映射到源代码行我说对代码运行一个静态分析器,并注意所有显示“可能出现空解引用”的地方。您在某个地方有一个bug。@DmitryBychenko-那么这与“对象引用未设置为实例…”不同吗?
if (this.IsDisposed)
{
return;
}