如何在 C++ Builder 下调试外部进程?
How to debug an external process under C++ Builder?
我有一个用 C++ Builder 编写的 DLL。 DLL 是用“调试信息”构建的。
我不能 运行 并从 IDE 调试这个 DLL,因为它是作为另一个进程(主 exe)中的插件动态加载的。我的 DLL 需要先复制到主 exe 的文件夹中。
所以,我将 IDE 附加到该流程,但我不知道从这里可以做什么。
我知道如果我在主进程中单击一个按钮来加载和使用我的 DLL,则会引发 AV 并显示一条自定义消息,其中包含一些关于错误的小信息。引发 AV 时,调试器不会介入。可能错误是在更高级别捕获的。
如果我也可以附上我的 DLL 的源代码并在其中放置一个断点,那就太好了。
如何获取有关该 AV(其来源)的更多信息?
(基本上,那些进行此类调试的人的任何提示都会非常有帮助)。
I have a DLL that is written in C++ Builder. The DLL is built with "debug info" on.
I cannot run and debug this DLL from the IDE because it is loaded as a plugin in another process.
是的,你可以。
打开IDE中的DLL项目,进入项目的运行参数,将需要的EXE设置为项目的Host。这样,当您“运行”DLL 项目进行调试时,IDE 将改为执行主机并将调试器附加到该进程。当主机进程将您的 DLL 加载到内存中时,您可以根据需要单步执行和调试 DLL 的代码。
如果主机进程在您开始调试之前已经 运行ning,您可以在主机进程加载您的 DLL 之前手动将调试器附加到主机进程,然后调试器仍然可以单步执行一旦主机将 DLL 加载到内存中,通过 DLL 的代码。
我有一个用 C++ Builder 编写的 DLL。 DLL 是用“调试信息”构建的。
我不能 运行 并从 IDE 调试这个 DLL,因为它是作为另一个进程(主 exe)中的插件动态加载的。我的 DLL 需要先复制到主 exe 的文件夹中。
所以,我将 IDE 附加到该流程,但我不知道从这里可以做什么。
我知道如果我在主进程中单击一个按钮来加载和使用我的 DLL,则会引发 AV 并显示一条自定义消息,其中包含一些关于错误的小信息。引发 AV 时,调试器不会介入。可能错误是在更高级别捕获的。
如果我也可以附上我的 DLL 的源代码并在其中放置一个断点,那就太好了。
如何获取有关该 AV(其来源)的更多信息?
(基本上,那些进行此类调试的人的任何提示都会非常有帮助)。
I have a DLL that is written in C++ Builder. The DLL is built with "debug info" on. I cannot run and debug this DLL from the IDE because it is loaded as a plugin in another process.
是的,你可以。
打开IDE中的DLL项目,进入项目的运行参数,将需要的EXE设置为项目的Host。这样,当您“运行”DLL 项目进行调试时,IDE 将改为执行主机并将调试器附加到该进程。当主机进程将您的 DLL 加载到内存中时,您可以根据需要单步执行和调试 DLL 的代码。
如果主机进程在您开始调试之前已经 运行ning,您可以在主机进程加载您的 DLL 之前手动将调试器附加到主机进程,然后调试器仍然可以单步执行一旦主机将 DLL 加载到内存中,通过 DLL 的代码。