gpt4 book ai didi

c++ - 如果另一个线程导致它在 Windows 上崩溃,我该如何延迟销毁我的进程?

转载 作者:行者123 更新时间:2023-11-28 03:23:41 25 4
gpt4 key购买 nike

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

所以这是我的问题:

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

最佳答案

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

关于c++ - 如果另一个线程导致它在 Windows 上崩溃,我该如何延迟销毁我的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com