Delphi 12组件设计时调试功能失效,求临时解决方案
Delphi 12 调试第二个Delphi实例失效的临时解决办法
问题背景
在Delphi 11及更早版本(从D3到D11)中,调试组件包时可通过指定宿主为bds.exe触发组件构造断点:以调试模式构建组件包,设置宿主应用路径为C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\bds.exe,启动参数为-pDelphi,运行后第二个Delphi实例打开,将组件拖到窗体时,第一个实例的Create过程断点会正常触发。但升级到Delphi 12(含补丁版、12.2)后该功能失效:断点无蓝色加载标识,拖组件也不会触发调试中断。
复现步骤
- 打开Delphi IDE
- 打开目标组件包项目
- 以调试模式构建包,在组件的
Create过程首行设置断点 - 进入「运行」设置面板,指定宿主应用为
C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\bds.exe,启动参数设为-pDelphi - (可选)重新构建组件包
- 点击运行,启动第二个Delphi实例
- 在第二个实例中新建「VCL应用程序」项目
- 将目标组件拖到窗体上
- 返回第一个Delphi实例,断点无蓝色加载标识,未触发调试中断
临时解决办法
针对Delphi 12的这个问题,可尝试以下几种临时方案:
手动加载调试符号
第二个Delphi实例启动后,在第一个Delphi的调试器中,通过「运行」→「加载符号」菜单,手动定位到组件包调试版.bpl和.dcp文件的输出路径,强制加载调试符号。加载完成后,断点应显示为蓝色可触发状态。调整宿主启动参数与符号路径
- 将启动参数修改为
-pDelphi -nostartpage,避免启动页加载可能引发的符号加载冲突 - 确保组件包调试版输出目录已添加到系统
PATH环境变量,或在Delphi「工具」→「选项」→「调试器」→「符号路径」中添加该目录
- 将启动参数修改为
关闭调试与编译优化
- 进入组件包项目的「选项」→「编译器」→「调试」,勾选「生成调试信息」,禁用「优化代码」
- 进入「调试器」选项,关闭「启用调试器优化」
- 重新构建组件包后再尝试调试流程
手动附加调试进程
不通过宿主应用启动,先手动打开第二个Delphi实例;在第一个Delphi中通过「运行」→「附加到进程」,选择bds.exe进程完成附加;之后加载组件包并设置断点,再拖组件测试断点触发情况。
内容的提问来源于stack exchange,提问作者Eric Dumont
相关产品推荐
相关产品推荐

