【发布时间】:2016-08-03 12:25:25
【问题描述】:
我负责已知会引发此错误的应用程序。
The instruction at 0x09537333 referenced memory at 0x00000000. The memory could not be read.
很遗憾,我自己无法复制它。
我的问题是,我该如何诊断/调试这个?我有违规指令的内存位置,但我可以追溯到我的代码中的一行吗?即0x09537333 是指相对于我的应用程序的位置还是在操作系统中(Windows 7 Embedded)?
还有其他方法可以获取有关此错误的更多信息吗?我应该在我的代码中寻找任何已知的常见原因吗?
【问题讨论】:
-
您将无法从中找到错误的原因 - 您需要在您的 exe 中包含 pdb 文件,以便在发生崩溃时您将获得堆栈跟踪。跨度>
-
您的应用是否生成了 minidump 文件?如果是这样,您可以将其加载到 WinDbg 中并计算出来,不过这是一个相当复杂的操作。
-
0x00000000is null:0x09537333处的代码访问null对象什么的;通常起始地址是0x00400000(检查这个,Windows可以很好地使用另一个)所以RVA(相对虚拟地址)是0x09137333(假设起始地址是0040:0000)然后使用pdb 或其他调试信息将 RVA 映射到源代码行 -
我说对您的代码运行一个静态分析器,并注意所有显示“可以取消引用”的地方。你在某个地方有一个错误。
-
@DmitryBychenko - 那么这与“对象引用未设置为实例...”有什么不同?
标签: c# .net memory runtime-error