如何调试 VCL 错误?
How do I debug VCL errors?
我不知道你是怎么做到的,但是当我处理一个新组件时,为了测试它,我在 运行 时间手动创建它并为其分配父级,这样我不必每次都安装它...现在我已经完成了,当我以这种方式 运行 时,它工作得很好。但是在我将它安装在 VCL 中并且我想将它放在一个窗体上之后,我从构造函数的某处得到了一个 'access violation' 错误。如果我无法逐行访问 运行 以查看它发生的位置和条件,我该如何调试它?
在 IDE 中安装组件后,重新启动 IDE 并打开组件 run-time 包项目(它必须已在调试构建配置中编译)。然后转到 IDE“运行”菜单,select“参数”子菜单,并在“主机应用程序”字段中输入 Delphi IDE(类似于“C:\Program Files (x86)\Embarcadero\Studio.0\bin\bds.exe”)。然后按 F9 在调试器下 运行 你的项目(run-time 包)。
这将启动 IDE 的另一个实例。使用此实例,创建一个新的 VCL 项目并删除您的组件。当遇到您提到的访问冲突时,将弹出第一个实例。
当然,在按 F9 之前,您可以放置任何您喜欢的断点,然后单步执行代码以找出错误。
很可能,您也可以通过这种方式调试组件的 design-time 包。
我不知道你是怎么做到的,但是当我处理一个新组件时,为了测试它,我在 运行 时间手动创建它并为其分配父级,这样我不必每次都安装它...现在我已经完成了,当我以这种方式 运行 时,它工作得很好。但是在我将它安装在 VCL 中并且我想将它放在一个窗体上之后,我从构造函数的某处得到了一个 'access violation' 错误。如果我无法逐行访问 运行 以查看它发生的位置和条件,我该如何调试它?
在 IDE 中安装组件后,重新启动 IDE 并打开组件 run-time 包项目(它必须已在调试构建配置中编译)。然后转到 IDE“运行”菜单,select“参数”子菜单,并在“主机应用程序”字段中输入 Delphi IDE(类似于“C:\Program Files (x86)\Embarcadero\Studio.0\bin\bds.exe”)。然后按 F9 在调试器下 运行 你的项目(run-time 包)。
这将启动 IDE 的另一个实例。使用此实例,创建一个新的 VCL 项目并删除您的组件。当遇到您提到的访问冲突时,将弹出第一个实例。
当然,在按 F9 之前,您可以放置任何您喜欢的断点,然后单步执行代码以找出错误。
很可能,您也可以通过这种方式调试组件的 design-time 包。