繁体   English   中英

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

[英]Is there a way to enable Debug DCUs without including the System unit?

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

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

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

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

  1. 备份...\\Embarcadero\\RAD Studio\\10.0\\lib\\win32\\debug\\System.dcu
  2. 复制...\\Embarcadero\\RAD Studio\\10.0\\lib\\win32\\release\\System.dcu to ...\\Embarcadero\\RAD Studio\\10.0\\lib\\win32\\debug\\System.dcu
  3. 在将修补程序或更新应用于Delphi之前,请还原原始System.dcu文件。

重复其他平台:将win32替换为其中任何一个,具体取决于您运行的Delphi版本。

  • android
  • iosDevice
  • iossimulator
  • osx32
  • win64

编辑2:

重复其他支持的语言而不是英语:用debug\\##替换debugrelease ,并为你想要使用的每种语言## 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$(BDSLIB)\\$(Platform)\\nodebug用于所有上述平台。
  3. $(BDSLIB)\\$(Platform)\\release\\$(LANGDIR);复制您不想调试的任何非英语语言单元$(BDSLIB)\\$(Platform)\\release\\$(LANGDIR); $(BDSLIB)\\$(Platform)\\nodebug\\$(LANGDIR); 对于所有上述平台。

nodebug目录不必位于$(BDSLIB)领域,但保留$(Platform)非常方便,因为它比Win32更容易支持其他平台。

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

下图是针对Delphi XE3和OSX的。

它支持英语调试DCU翻译后的调试DCUS

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM