如果另一个线程导致进程在windows上崩溃,我该如何延迟销毁进程

How do I Delay destruction of my process if another thread causes it to crash on windows?

本文关键字:进程 何延迟 延迟 线程 另一个 崩溃 windows 如果      更新时间:2023-10-16

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

所以我的问题是:

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

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