1

我有一个 DLL 被注入到非常旧的、有缺陷的并且现在不受它的开发人员应用程序的支持。有时该应用程序崩溃,我需要一些方法来捕获所有可能发生的未处理异常(来自 DLL)以保存数据,然后才允许应用程序崩溃。我怎样才能做到这一点?

目前,有一个用于此目的的外部调试器,但它太慢了,而且很难保持这种状态。

4

1 回答 1

10

您必须启动一个承载 DLL 的新进程。如果 DLL 将要崩溃,它会降低进程,无论你喜欢与否。当然,您可以尝试捕获异常或类似的东西,但如果抛出异常,则意味着内存已损坏。发生灾难性崩溃比让程序继续在不一致的状态下运行要好。

windows shell 是一个实际执行此操作的程序——它在代理进程中启动一些插件,因此如果插件崩溃,它不会关闭整个 shell。您需要使用进程间通信来在您自己和您开始的代理之间进行通信。

于 2011-05-27T03:51:35.703 回答