0

我正在编写一个 DLL,它由一个封闭源代码的专有程序加载,我无法控制。我还加载了一个同样晦涩难懂的专有 DLL。由于有时我必须通过我的 DLL 接口以非常低的延迟将命令中继到我加载的 DLL,因此我在初始化我的 DLL 时启动了一个单独的分离线程,并通过无锁队列向其发送未格式化的调试信息。因此,耗时的调试输出格式化和写入日志文件是异步完成的。问题是进程意外崩溃(我几乎可以肯定这不是我的错),而且我无法知道最后的调试信息是什么,因为我的分离线程在将其写入磁盘之前就被 Windows 杀死了。

所以这是我的问题:

  • 如果专有程序崩溃以便我的分离线程在销毁之前运行更长时间,我可以以任何方式延迟销毁吗?
  • 进程间通信会通过将我的分离线程移动到另一个 Windows 不会杀死的进程来解决我的问题吗?如果是这样,你会建议什么方法(我没有与 IPC 合作太多)
  • 如果我使用 IPC,我如何知道何时终止我的“调试格式化过程”?
4

1 回答 1

2

我认为即使使用 IPC,您也会遇到这样的情况:您的线程在进程故障期间可能有未写入的调试信息。大概你没有一直在进行调试,所以我认为你不需要一个单独的线程,只需要一个编译时或运行时选项来启用它。在终止之前,您可能可以完成SetUnhandledExceptionFilter该过程并做一些事情。

于 2013-02-06T17:07:31.943 回答