我有 DLL 和一些 COM对象。有时,此对象崩溃并在Windows事件日志中注册具有大量十六进制信息的错误事件。我不知道为什么会发生这种崩溃。
那么,我如何跟踪那些COM对象异常?
答案 0 :(得分:2)
第一步是查找失败代码的十六进制值(E.G. E_FAIL 0x80004005)。我已经非常幸运地在谷歌发布了这个价值,以了解错误代码的含义。
然后,我只是使用反复试验来尝试隔离代码中失败的位置,以及失败的根本原因。
答案 1 :(得分:1)
如果您只想快速找出错误代码的含义,可以使用Visual Studio打包的“错误查找”工具(详情here)。输入十六进制值,它将为您提供描述该错误代码的字符串。
当然,一旦你知道,你仍然要弄清楚它为什么会发生。
答案 2 :(得分:1)
查找错误(hresult)代码的好方法是HResult Plus或welt.exe(Windows错误查找工具)。
我在COM类中内部使用日志记录来查看发生了什么。此外,一旦可执行文件加载了COM类,您就可以将VS调试器附加到它,并使用断点,监视和所有有趣的东西来调试COM代码。
答案 3 :(得分:1)
COM对象不会抛出异常。他们返回HRESULT,其中大部分表示失败。因此,如果您正在寻找等效的异常堆栈跟踪,那么您将失去运气。您将不得不手动浏览代码并弄清楚发生了什么。