0

我有一个带有一些COM 对象的DLL。有时,此对象会崩溃并在 Windows 事件日志中注册一个错误事件,其中包含大量十六进制信息。我不知道为什么会发生这种崩溃。

那么,如何跟踪那些 COM 对象异常呢?

4

4 回答 4

2

第一步是查找失败代码的十六进制值(EG E_FAIL 0x80004005)。我非常幸运地在 Google 中发布了该值,以了解错误代码的含义。

然后,我只是使用反复试验来尝试隔离代码中失败的位置以及失败的根本原因。

于 2008-08-14T13:03:10.447 回答
1

如果您只想快速找出错误代码的含义,可以使用 Visual Studio 附带的“错误查找”工具(详情请点击此处)。输入十六进制值,它将为您提供描述该错误代码的字符串。

当然,一旦你知道了这一点,你仍然必须弄清楚它为什么会发生。

于 2008-08-14T13:40:05.987 回答
1

查找错误 (hresult) 代码的好方法是 HResult Plus 或 welt.exe(Windows 错误查找工具)。

我在 COM 类内部使用日志记录来查看发生了什么。此外,一旦 COM 类被可执行文件加载,您可以将 VS 调试器附加到它并使用断点、监视和所有有趣的东西来调试 COM 代码。

于 2008-08-16T19:00:30.167 回答
1

COM 对象不会抛出异常。它们返回 HRESULT,其中大部分表示失败。因此,如果您正在寻找异常堆栈跟踪的等价物,那么您就不走运了。您将不得不手动浏览代码并弄清楚发生了什么。

于 2008-08-16T19:55:19.620 回答