【发布时间】:2021-01-26 07:40:33
【问题描述】:
我在 Clion 中构建了一个 64 位的 dll。 Tollchain Visual Studio
项目编译成功。对于调试,我使用在 Delphi 中编译的 Win64 主机应用程序。我在配置编辑器中添加了这个应用程序,当我开始调试时,我收到了消息
“Project.exe”不包含 x86_64 架构
进程以退出代码 0 结束
没有调试器(或从 Visual Studio 调试器下)的应用程序本身启动并加载我的 dll。
附加信息
我编译了一个空的 Delphi 项目
program Project1;
{$APPTYPE CONSOLE}
begin
end.
当我从调试器下将它作为主机应用程序运行时,我得到了同样的错误。
将在 Visual Studio 中构建的空项目作为宿主应用程序运行时
int main()
{
}
调试器启动时没有错误
平台:Win64
用于比较 PE Headers Delphi 和 VC 程序
德尔福
视觉工作室
【问题讨论】:
-
不同的调试器使用包含在可执行文件中的不同样式的调试信息。这意味着不是每个调试器都能成功调试任何文件。所以我猜测 Visual Studio 没有将 Delphi Debug 信息识别为有效使用。您可以通过强制 Delphi 将调试信息输出到单独的 .TDS 文件中来解决此问题,该文件将与您的可执行文件或 DLL 一起创建。然后,Visual Studio 可能能够使用该文件中的调试信息来成功创建调试会话。
-
@SilverWarior 我不需要来自 exe 的调试信息。我调试dll。而Visual Studio完美地让你调试dll,它是由在Delphi中编译的宿主进程调用的。是的,没有来自 exe 的调试信息,但也不需要。问题是我无法在 Clion 中启动此主机进程。我目前在两个 IDE 中工作。我用Сlion写代码,用MSVС进行调试
-
与可执行文件需要包含调试信息的方式相同,DLL 也是如此。
-
@SilverWarior 有什么用? Visual Studio 不需要这个。我没有遇到需要调试模块以外的模块的调试信息的调试器。如果是,那很好,但它是可选的。
标签: c++ delphi debugging dll clion