How to trace COM objects exceptions?我有一个包含一些COM对象的DLL。 有时,此对象崩溃,并在Windows事件日志中注册带有许多十六进制信息的错误事件。 我不知道为什么会发生崩溃。 因此,如何跟踪那些COM对象异常? 第一步是查找失败代码的十六进制值(例如E_FAIL 0x80004005)。我非常幸运地在Google中发布了该值,以了解错误代码的含义。 然后,我只是使用反复试验来尝试找出失败代码中的位置以及失败的根本原因。 COM对象不会引发异常。它们返回HRESULT,大多数表示失败。因此,如果您正在寻找与异常堆栈跟踪等效的选项,那么您就不走运了。您将需要手工遍历代码并弄清楚发生了什么。 查找错误(结果)代码的一种好方法是HResult Plus或welt.exe(Windows错误查找工具)。 我在COM类内部使用日志记录来查看发生了什么。同样,一旦可执行文件加载了COM类,您就可以将VS调试器附加到它上,并使用断点,监视和所有有趣的东西调试COM代码。 如果您只想以一种非常快速的方式找出错误代码的含义,则可以使用Visual Studio附带的"错误查找"工具(此处有详细信息)。输入十六进制值,它将为您提供描述该错误代码的字符串。 当然,一旦知道了这一点,您仍然必须弄清楚它为什么会发生。 |