Delphi调试排除system.pas文件

4

当通过VCL进行调试时(必须使用调试dcus!),通常需要(在某些情况下大部分时间)逐步执行汇编代码,特别是像“_IntfClear”这样的例程。

(删除System.pas无法解决问题,因为经常会弹出一个窗口询问system.pas的位置)

有没有办法将“system”单元从调试中排除?


2
好的,你可以将非调试的DCUs .dcu文件放入lib\debug文件夹中。这样做可以实现你的要求,但我肯定不建议这样做! - David Heffernan
你也可以通过hack的方式,将带有调试信息的system.dcu替换为不带调试信息的system.dcu。 - Free Consulting
Delphi XE7中的一个多平台模板应用程序(新项目>带有导航的选项卡)正是这样做的,它会进入所有系统单元。原来,创建该模板的人更改了一堆项目设置(包括切换“Debug DCU's”)。同样的模板在32位应用程序上失败了(在项目设置中)-我不得不完全删除Win32平台并重新添加它才能使其工作。我想知道那个人是否被解雇了。 - Jerry Dodge
1个回答

10

Delphi包含的DCU文件位于Lib文件夹中。调试版本位于Lib/Debug文件夹中。所有“使用调试DCUs”选项控制的仅是这两个文件夹中哪一个出现在项目库路径中,因此链接程序时会包含其中一个或另一个集DCU文件。

既然我们已经揭开了“使用调试DCUs”选项的神秘面纱,那么我们可以利用它。要从调试中排除某个特定的DCU,请启用“使用调试DCUs”,然后找到需要排除的单元的调试版本,并将其替换为非调试版本。例如,删除Lib/Debug/System.dcu并替换为Lib/System.dcu

另外,如果有一个VCL单元想要跟踪,但对于其他不感兴趣的调试代码则不需要,那么禁用“使用调试DCUs”,然后找到该DCU的调试版本并放入非调试文件中。

如果您意外地跟踪了一个您不感兴趣的函数,则可以按Shift+F8“步出”当前函数。最终,您将学会识别通常导致您不想跟踪的调用的位置,然后您将按F8而不是F7“步进”代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接