【问题标题】:How to debug plugin to a closed-source exe?如何调试插件到闭源 exe?
【发布时间】:2020-09-03 20:02:08
【问题描述】:

我正在为 AIMP 音乐播放器编写一个插件,它本身是封闭源代码,但有添加插件的文档。该界面在 Delphi 中可用,因此我正在研究如何使用 RAD Studio Delphi 10.3 社区版。

我偶然发现了以下两种情况之一:

  • 我调用 AIMP 方法或设置参数的方式有问题
  • 我调用的方法有问题

我已经设置了运行参数,以便在我按下“运行”时实际启动 AIMP 程序。我还启用了Tools > Options > Debugger > Embarcadero Debuggers > Debug spawned processes。但是,程序并没有在我的断点处停止,并且断点前面显示了一个灰色的X 图标。

原来这是因为我在 AIMP 插件目录中也有一个已编译的 dll 版本,所以它加载的是旧版本,而不是我新编译的版本。但即使我删除了旧版本......我怎样才能让它真正调用新版本? 当我构建我的 dll 并将其粘贴到 AIMP 的插件目录中时,它将被加载并且设置屏幕会反映这一点。当用户修改设置时,我什至可以显示一个消息框。但是复制 dll 意味着我不能在断点处停止。

如何使调试器在断点处停止,以便我可以单步执行程序,最好能够查看局部变量的值?

【问题讨论】:

  • 您是否使用构建后事件将 DLL 复制到 AIMP 插件目录?
  • @Brian 不,到目前为止,我正在手动移动它,这不起作用。我也刚刚找到this related comment。我在哪里可以找到相关设置?
  • Found it。我试试看
  • 您也可以设置输出目录以将其编译到最终位置(项目 -> 选项 -> Delphi -> 输出目录)。确保你测试它最终在你想要的地方结束,因为有很多地方可以设置价值,有些似乎不起作用。
  • @Brian 你的第二条评论成功了!谢谢你。我在您的初始评论之后设置的构建后事件仅复制了其他一些文件或给了它错误的结尾,所以我决定首先尝试 Output Directory 设置并且它有效。如果您将其写为答案,我会接受:)

标签: delphi rad-studio


【解决方案1】:

Project > Options > Building > Delphi Compiler 下有Output directory 选项。正如@Brianthis comment 中所建议的那样,将相关构建配置的此路径设置为AIMP 插件目录就可以了。

【讨论】:

    猜你喜欢
    • 2011-09-14
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2013-01-10
    • 2019-08-05
    • 2017-06-10
    • 2014-09-02
    相关资源
    最近更新 更多