如何对 COM 组件进行故障排除?

How do I troubleshoot a COM component?

对于这个问题的含糊不清,我深表歉意。

在将应用程序迁移到新的服务器环境期间,为应用程序公开 API 的 COM 组件 (.dll) 文件已停止工作。

有什么方法可以对 COM 组件进行故障排除? COM 组件是否有记录故障的标准方法(Windows 事件查看器中没有事件)?我可以 'inspect' 任何方式的组件吗?

我已经使用 regsvr32.exe 成功注册了该组件(除了创建一些 Windows 注册设置外,我不知道这实际上做了什么)。

马丁

这种形式的故障排除分为 2 个部分。

首先使用 SYS 内部的 procmon。 SYS internals 这显示了试图打开 COM 服务器的进程的类似 strace 的行为。

查看失败的函数调用。

接下来我将尝试在调试器中直接加载 com 控件,看看是否有任何失败

procmon 的结果将显示注册表位置和文件位置,它们是加载 com 对象的关键。

失败可能是:-

  1. 为一个用户安装,而不是为所有用户安装。这将无法找到命名对象
  2. 架构不正确。如果prog.exe转到64位,将无法加载32位com DLL
  3. 缺少依赖项。更多 DLL 可能无法加载 - 这些将显示在 procmon trace
  4. 配置数据。如果 com DLL 需要进一步的配置,那么这将显示在 procmon 的事件中,或者在调试器
  5. 的错误中

您可以在调试器中加载任何 DLL。调试符号使它更容易,但我们正试图发现错误,它进行的调用中的异常