【发布时间】:2010-09-08 20:25:58
【问题描述】:
了解异常代码后,有没有办法进一步了解引发的实际异常的含义?
我有问题的例外: 0x64487347
异常地址:0x1
调用堆栈没有显示任何信息。
我正在查看崩溃的 .dmp,但实际上并未在 Visual Studio 中进行调试。
【问题讨论】:
标签: c++ exception visual-c++ crash memory-dump
了解异常代码后,有没有办法进一步了解引发的实际异常的含义?
我有问题的例外: 0x64487347
异常地址:0x1
调用堆栈没有显示任何信息。
我正在查看崩溃的 .dmp,但实际上并未在 Visual Studio 中进行调试。
【问题讨论】:
标签: c++ exception visual-c++ crash memory-dump
Microsoft 运行时抛出的真正 C++ 异常的 SEH 代码为 0xe06d7363 (E0 + 'msc')。您还有其他一些例外情况。
.NET 使用代码 0xe0434f4d (E0 + 'COM') 生成 SEH 异常。
NT 的状态码记录在 ntstatus.h 中,一般从 0x80(警告)或 0xC0(错误)开始。最著名的是0xC0000005,STATUS_ACCESS_VIOLATION。
【讨论】:
因为您正在查看故障转储,所以我假设它来自客户,您无法通过更多工具轻松重现故障。
除了注意异常代码 0x64487347 是 ASCII“dShG”之外,我没有太多帮助,开发人员在制作这样的幻数时经常使用例程或故障条件的首字母。
在谷歌上搜索一下,在适当的上下文中找到了一个 dHsg,这是在 Google 图书搜索“使用 Visual C++ 6”中的函数名称,作者 Kate Gregory。不幸的是,仅此一项并没有帮助。
【讨论】:
如果您知道哪个块引发了异常,您能否在 catch 块中放置更多特定的处理程序以尝试以这种方式隔离它?
你是否抛出了你自己滚动的异常?
编辑:我忘了告诉你 this article 关于 Visual C++ 异常,我发现它非常有用。
罗伯
【讨论】: