有没有办法在不包含系统单元的情况下启用调试DCU?

时间:2014-01-01 20:38:50

标签: delphi

在Delphi中使用调试DCU非常好,除了系统单元在方法初始化/清理(释放接口,清除数组,行走异常帧等)方面增加了很多开销。

有没有办法用调试DCU运行Delphi,但没有系统单元?

2 个答案:

答案 0 :(得分:21)

启用Debug DCU时,您所做的只是更改DCU搜索路径。特别是在搜索.dcu文件时使用 Debug DCU Path 选项指定的路径。

因此,您可以创建一个新目录并将其添加到“调试DCU路径”选项中的路径列表的前面。在该目录中放置不包含调试符号的标准System.dcu。

答案 1 :(得分:7)

  1. 备份...\Embarcadero\RAD Studio\10.0\lib\win32\debug\System.dcu
  2. ...\Embarcadero\RAD Studio\10.0\lib\win32\release\System.dcu复制到...\Embarcadero\RAD Studio\10.0\lib\win32\debug\System.dcu
  3. 在将修补程序或更新应用于Delphi之前,请恢复原始System.dcu文件。
  4. 对其他平台重复:将win32替换为其中任何一个,具体取决于您正在运行的Delphi版本。

    • android
    • iosDevice
    • iossimulator
    • osx32
    • win64

    编辑2:

    重复其他受支持的语言而不是英语:将debugrelease替换为debug\##,将release\##替换为您要使用的每种语言##

    目前支持的语言我知道:

    • de(德语)
    • fr(法文)
    • jp(日文)

    编辑:

    这种方式效果很好,即使安装顺序弄乱了你的搜索路径,就像在Delphi XE / XE2时代不止一次发生在我身上的那样。

    适用于平台的releasedebug分支中的任何单元。

    编辑3:

    如果您的Delphi版本没有遭受库路径覆盖,那么您可以使用Davids建议执行以下步骤:

    1. $(BDSLIB)\$(Platform)\nodebug;$(BDSLIB)\$(Platform)\debug\$(LANGDIR);之类的路径添加到Delphi Debug DCU Path。
    2. 将您不想调试的任何英语语言单元从$(BDSLIB)\$(Platform)\release复制到$(BDSLIB)\$(Platform)\nodebug以获取所有上述平台。
    3. 将您不想调试的任何非英语语言单元从$(BDSLIB)\$(Platform)\release\$(LANGDIR);复制到$(BDSLIB)\$(Platform)\nodebug\$(LANGDIR);以获取所有上述平台。
    4. nodebug目录不一定在$(BDSLIB)领域,但保留$(Platform)非常方便,因为它比{{1}更容易支持其他平台}。

      我已经在所有支持的平台上使用Delphi XE3和XE5进行了测试,并且它可以工作。在XE和XE2中,我有时会用错误的值覆盖搜索路径的某些部分,所以我更喜欢第一种方法。

      下图为Delphi XE3和OSX。

      它支持English debugging DCUstranslated debugging DCUS

      enter image description here