【问题标题】:delphi debugging exclude system.pasdelphi调试排除system.pas
【发布时间】:2013-09-25 14:08:19
【问题描述】:

当通过 VCL 进行调试时(使用 debug dcus 必须打开!),您经常(在某些情况下大部分时间)单步调试汇编代码,尤其是像“_IntfClear”这样的例程。

(删除 System.pas 无济于事,因为经常会出现一个弹出窗口询问 system.pas 所在的位置)

是否有机会将单元“系统”排除在调试之外?

【问题讨论】:

  • 好吧,您可以将非调试 DCU 的 .dcu 文件放入 lib\debug 文件夹。这可以满足您的要求,但我当然不建议您这样做!
  • 您也可以将 system.dcu 替换为带有调试信息的 system.dcu w/o debug info。
  • Delphi XE7,多平台模板应用程序之一(新项目> 带有导航的选项卡)正是这样做的,它进入了所有系统单元。事实证明,创建该模板的人更改了一堆项目设置(包括切换Debug DCU's)。此外,相同的模板在 32 位应用程序上失败(在项目设置中) - 我必须从平台上完全删除 Win32 并重新添加它以使其工作。我想知道那个人是否被解雇了。

标签: delphi debugging assembly system


【解决方案1】:

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

现在我们已经发现了“使用调试 DCU”选项的魔力,我们可以利用它。要从调试中排除某个 DCU,请启用“使用调试 DCU”,然后只需找到相关单元的调试版本并将其替换为非调试版本。例如,删除 Lib/Debug/System.dcu 并将其替换为 Lib/System.dcu

或者,如果您想要跟踪一个 VCL 单元,但对调试不是您编写的代码不感兴趣,则禁用“使用调试 DCU”,然后找到该 DCU 的调试版本并将其放入在非调试文件中。

如果你不小心发现自己在跟踪一个你不感兴趣的函数,你可以按 Shift+F8 来“跳出”当前函数。最终,您将学会识别通常会导致您不想跟踪的呼叫的位置,然后您将按 F8 来“跳过”该代码而不是 F7 来“进入”它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-16
    • 2011-08-05
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多