2

我正在构建一个使用 JVCL 插件系统的项目,该系统依赖于运行时 Delphi 包,自从我将它添加到我的项目中,调试就变成了一场噩梦,因为我不再能够逐步跟踪到源代码任何 VCL 或 RTL 单元。它们在调试器中都被标记为灰点(当相关函数完全出现在调用堆栈中时;有时我会得到非常奇怪的结果),这让我发疯了。有谁知道如何恢复我的调试 DCU 功能?(除了显而易见的:删除所有与插件相关的代码。这会起作用,但不会真正有帮助。)

编辑:为了清楚起见,我可以在我的项目中追踪任何其他内容。JVCL 代码。其他 3rd 方库。我自己的代码。所有这些都在调试器中显示得很好。只是不是 Delphi RTL 和 VCL 代码——编译器选项“使用调试 DCU”应该授予您访问权限的东西。

4

3 回答 3

7

这是按设计工作的。

当您使用包进行构建时,您正在执行包代码,而不是使用任何 DCU。因此,DCU 已编译,您无法访问 Debug DCU。

您可以完全关闭包,也可以不使用要调试的特定包进行编译。您可以选择应该使用或不使用哪些包,不使用的包将通过 Debug DCU 进行“调试”。

于 2008-11-03T08:25:02.997 回答
3

包只是 DLL。您必须将调试信息包含到那些能够调试它们的信息中,这就是您想要做的。所以你需要有 VCL 和 RTL 的调试包,而不是调试 dcus。当您使用预构建的软件包时,甚至不再需要调试 dcus。

于 2008-11-03T03:42:29.230 回答
0

可能是您拥有的 DCU 已过时,因此调试器不会进入代码。

通常删除所有 DCU,然后执行 Build All 将解决此问题。

您可能还需要删除搜索路径中的 DCU,以确保这一点。当然要先备份...

于 2008-11-03T01:26:09.067 回答