0

我有一个用 C++ Builder 编写的 DLL。DLL 是使用“调试信息”构建的。
我无法从 IDE 运行和调试此 DLL,因为它作为插件在另一个进程(主 exe)中动态加载。我的 DLL 需要先复制到主 exe 的文件夹中。

因此,我将 IDE 附加到该过程,但我不知道从这里做什么。

我知道,如果我在主进程中单击一个按钮来加载和使用我的 DLL,则会引发 AV,并且会显示一条自定义消息,其中包含一些关于错误的小信息。当 AV 被提升时,调试器不会介入。错误可能在更高级别被捕获。

如果我还可以附加我的 DLL 的源代码并在其中放置一个断点,那就太好了。

我如何获得有关该 AV(其起源)的更多信息?
(基本上,那些进行此类调试的人提供的任何提示都会非常有帮助)。

4

1 回答 1

1

我有一个用 C++ Builder 编写的 DLL。DLL 是使用“调试信息”构建的。我无法从 IDE 运行和调试此 DLL,因为它在另一个进程中作为插件加载。

是的你可以。

在 IDE 中打开 DLL 项目,进入项目的运行参数并将所需的 EXE 设置为项目的主机。这样,当您“运行”DLL 项目进行调试时,IDE 将改为执行主机并将调试器附加到该进程。当主机进程将您的 DLL 加载到内存中时,您可以根据需要逐步调试 DLL 的代码。

如果在您开始调试之前主机进程已经在运行,您可以在加载 DLL 之前手动将调试器附加到主机进程,然后一旦主机加载 DLL,调试器仍然能够单步执行 DLL 的代码进入记忆。

于 2020-06-23T23:51:25.880 回答