簡體   English   中英

如果另一個線程導致它在Windows上崩潰,我如何延遲我的進程的破壞?

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

我正在編寫一個DLL,它由一個專有程序加載,該程序是封閉源代碼,我無法控制。 我還加載了一個專有的DLL,這同樣模糊不清。 由於我有時必須中繼命令,我通過我的DLL接口訪問DLL I Load,延遲非常低我在初始化DLL時啟動一個單獨的分離線程,並通過無鎖隊列發送未格式化的調試信息。 因此,耗時的格式化調試輸出和寫入日志文件是異步完成的。 問題是進程無意中崩潰(我幾乎肯定不是我的錯),我無法知道最后的調試信息是什么,因為我的分離線程被Windows殺死之后才能將其寫入磁盤。

所以這是我的問題:

  • 如果專有程序崩潰,我可以以任何方式延遲銷毀,以便我的分離線程在銷毀之前運行更長時間嗎?
  • 進程間通信是通過將我的分離線程移動到另一個窗口不會被殺死的進程來解決我的問題嗎? 如果是這樣,你會建議什么方法(我沒有多少與IPC合作)
  • 如果我使用IPC,我怎么知道何時終止我的“調試格式化過程”?

我認為即使使用IPC,您也會遇到過程故障期間您的線程可能有未寫入的調試信息的情況。 大概你沒有調試一直在進行,所以我認為你不需要一個單獨的線程,只需要一個編譯時或運行時選項來啟用它。 您可以為進程設置SetUnhandledExceptionFilter ,並在終止之前執行一些操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM