如何将插件调试到闭源 exe?
How to debug plugin to a closed-source exe?
我正在为 AIMP 音乐播放器编写一个插件,它本身是封闭源代码,但有添加插件的文档。该界面在 Delphi 中可用,因此我正在研究如何使用 RAD Studio Delphi 10.3 社区版。
我偶然发现了以下情况之一:
- 我调用 AIMP 方法或设置参数的方式有问题
- 我调用的方法有问题
我已经设置了 运行 参数,这样当我按下“运行”时,AIMP 程序就会真正启动。我还启用了 Tools > Options > Debugger > Embarcadero Debuggers > Debug spawned processes
。但是,程序并没有停在我的断点处,断点前显示了一个灰色的X
图标。
原来这是因为我在 AIMP 插件目录中也有一个已编译的 dll 版本,所以它正在加载旧版本而不是我新编译的版本。但即使我删除了旧版本......我怎样才能让它真正调用新版本?
当我构建我的 dll 并将其粘贴到 AIMP 的插件目录中时,它将被加载并且设置屏幕反映了这一点。当用户修改设置时,我什至可以显示一个消息框。但是把dll拷贝过来就意味着我不能在断点处停止。
如何让调试器在我的断点处停止,以便我可以单步执行程序,理想情况下能够看到局部变量的值?
Project > Options > Building > Delphi Compiler
下有选项 Output directory
。正如 @Brian in 所建议的那样,将相关构建配置的此路径设置为 AIMP 插件目录就可以了。
我正在为 AIMP 音乐播放器编写一个插件,它本身是封闭源代码,但有添加插件的文档。该界面在 Delphi 中可用,因此我正在研究如何使用 RAD Studio Delphi 10.3 社区版。
我偶然发现了以下情况之一:
- 我调用 AIMP 方法或设置参数的方式有问题
- 我调用的方法有问题
我已经设置了 运行 参数,这样当我按下“运行”时,AIMP 程序就会真正启动。我还启用了 Tools > Options > Debugger > Embarcadero Debuggers > Debug spawned processes
。但是,程序并没有停在我的断点处,断点前显示了一个灰色的X
图标。
原来这是因为我在 AIMP 插件目录中也有一个已编译的 dll 版本,所以它正在加载旧版本而不是我新编译的版本。但即使我删除了旧版本......我怎样才能让它真正调用新版本? 当我构建我的 dll 并将其粘贴到 AIMP 的插件目录中时,它将被加载并且设置屏幕反映了这一点。当用户修改设置时,我什至可以显示一个消息框。但是把dll拷贝过来就意味着我不能在断点处停止。
如何让调试器在我的断点处停止,以便我可以单步执行程序,理想情况下能够看到局部变量的值?
Project > Options > Building > Delphi Compiler
下有选项 Output directory
。正如 @Brian in