【问题标题】:How to debug a DLL file in Delphi如何在 Delphi 中调试 DLL 文件
【发布时间】:2009-02-27 10:37:21
【问题描述】:

我是一名开发 Visual C++ 的开发人员,但在我的项目中有一些 Delphi 组件。我需要调试 Delphi 组件来解决一些问题。

在debug中生成DLL文件然后在Delphi中开始debug需要哪些东西?

【问题讨论】:

    标签: c++ delphi


    【解决方案1】:

    在 Delphi 7 中你会这样做:

    项目 |选项 |编译器 |调试 |调试信息(检查)

    然后转到运行 |参数 | Host Application 并输入您的 exe 的名称。

    在您的 DLL 代码中添加一些断点,然后单击运行。您的 exe 将被加载,您可以在 Delphi IDE 中调试 DLL 部分。

    如果您的 exe 已在运行,请单击运行 |附加到进程

    --我对此进行了测试,发现我还需要在Delphi 7项目选项的链接器页面上检查“包含远程调试符号”。

    我能够使用 Run | 获得要命中的断点。参数以及运行 |附加到处理方法。我创建的测试 DLL 有一个 stdcall 函数,并由 Visual C++ 控制台应用程序动态加载。

    【讨论】:

    • @Chapel。您确定可以使用 Attach to process 来调试 DLL 吗?
    • 远程调试符号应该不是必需的
    • 我使用的是 delphi 5.0,一旦构建了 dll,我就会将该 dll 放在其他 dll 所在的单独文件夹中。当我在二进制代码中放置断点时,通过显示加载模块并转到我的 dll,单击我导出的方法,它的中断,但是当我显示代码时,不起作用。
    • 感谢 Paul-Jan 的提示,我能够在断点处中断。我需要做一个小的调整才能中断,我在加载 dll 时选择了中断,然后启用了断点。非常感谢!!!!
    • 远程调试符号应该不是必需的,但我发现 Delphi 通常无法加载 DLL 的调试符号,但是当远程调试符号启用时。也许它应该记录在案,也许它是一个错误,但启用它会有所帮助并且不会造成任何伤害。
    【解决方案2】:

    我们经常使用这个(使用 Delphi)。

    请务必:

    1. 在所有项目(DLL 文件)上启用所有调试选项。并禁用优化。
    2. 确保将宿主应用程序设置为正确的 EXE 文件。
    3. 构建 DLL 文件。

    您现在可以在 dll 和 exe 中放置断点。并从 IDE 运行 DLL 文件。它启动 EXE 文件并在请求的断点处停止。

    它甚至可以在动态链接 DLL 文件时工作(如果它们被卸载,蓝点就会消失)。

    【讨论】:

      【解决方案3】:

      Gamecat建议的方法是我以前用过的。

      另一种方法是:我有 DLL 项目,但我也制作了一个“测试台”项目。 “测试台”项目有一种形式,可以直接运行通常在 DLL 中使用的代码。

      【讨论】:

        猜你喜欢
        • 2023-03-17
        • 2011-01-05
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多