对于这个问题的含糊之处,我深表歉意。
在将应用程序迁移到新的服务器环境期间,公开应用程序 API 的 COM 组件 (.dll) 文件已停止工作。
有什么方法可以对 COM 组件进行故障排除吗? COM 组件是否有记录故障的标准方法(Windows 事件查看器中没有事件)?我可以以任何方式“检查”组件吗?
我已经使用 regsvr32.exe 成功注册了该组件(除了创建一些 Windows 注册表设置之外,我不知道它实际上做了什么)。
马丁
最佳答案
这种形式的故障排除分为 2 个部分。
首先使用SYS内部的procmon。 SYS internals这显示了尝试打开 COM 服务器的进程的类似于 strace 的行为。
查看失败的函数调用。
接下来我将尝试直接在调试器中加载 com 控件,查看那里是否有任何失败
procmon 的结果将显示注册表位置和文件位置,它们是加载 com 对象的关键。
失败可能是:-
- 为一名用户安装,而不是为所有用户安装。这将无法找到命名对象
- 架构不正确。如果
prog.exe
转到64位,它将无法加载32位com DLL - 缺少依赖项。更多 DLL 可能无法加载 - 这些将显示在 procmon 跟踪中
- 配置数据。如果 com DLL 需要进一步配置,那么这将显示在 procmon 中的事件中,或调试器中的错误中
您可以在调试器中加载任何 DLL。调试符号使它变得更容易,但我们正在尝试发现它所进行的调用中的错误和异常
关于c - 如何对 COM 组件进行故障排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630225/