【问题标题】:Delphi7 - How can i find where my project is hanging the compiler?Delphi7 - 如何找到我的项目挂起编译器的位置?
【发布时间】:2011-02-04 01:55:34
【问题描述】:

我在 Delphi7 中有一个项目。它相当大,由 40 多种形式和框架组成。 最近,编译器只允许我编译一次项目以便我可以运行它,然后每次重新编译 IDE 都会挂起,我必须结束 Delphi 进程。在此之前,我的 CPU 达到 50%(在双核机器上),所以我的推断是编译过程进入了无限循环。它生成的 Executable 是不可运行的,并且在挂起后通常具有固定的大小。

我想知道如何才能找到我的项目中这种不一致的地方。其他项目不会遇到同样的问题。

【问题讨论】:

  • 更多信息:所以我现在运行了一个小时左右,没有崩溃。看不到我改变了什么 - 我不认为它是我的代码。是的,我正在使用版本控制 - 但是有什么方法可以在损坏的 exe 中查看崩溃时它正在编译我的应用程序的哪个部分?
  • da-soft 关于使用 Process Explorer 的建议可能会为您指出编译器正在处理的文件。

标签: delphi compiler-construction ide


【解决方案1】:
  1. 您可以使用Process Explorer 来发现编译器正在做什么(读取文件,或...)。
  2. 检查QC 3807 问题。
  3. 检查系统资源 - 可用磁盘空间、内存。清理临时文件夹。检查磁盘是否有错误。你有杀毒软件运行吗?如果是,请尝试将其关闭。

【讨论】:

  • 我喜欢流程浏览器的想法。
  • 在编译过程中尝试使用进程资源管理器查看打开的句柄。成功编译后,我可以看到正在使用的文件。然而,在不成功的编译中,没有显示文件句柄。
【解决方案2】:

使用“消除过程”,看看它是否在你的代码中。

首先,备份您所在的位置,或保存到您的 CVS(您正在使用版本控制,对吗?对吗?很好。)将您的分支恢复到它工作的早期版本。看看这是否有效。如果是这样,请合并当前版本的一半更改。如果可行,请尝试另一半。继续把东西切成两半,你会通过排除的过程找到导致问题的代码。

或者,结果可能是配置中的某些内容。 Carbonite 可能是你的朋友。

【讨论】:

  • 是的,我恢复到没有崩溃的早期版本。通过消除过程,我发现了有问题的代码。不幸的是,这不是一个简单的过程!
【解决方案3】:

您可以:

  1. 在“环境选项”窗口的“首选项”选项卡中启用“编译进度显示”。

  2. 使用命令行编译器 bcc32.exe 获得详细的控制台输出。

两者都会让您知道哪个文件挂起编译器。

看看伟大的Delphi Speed Up 工具,它允许例如通过 ESC/鼠标移动中止 CodeCompletion 和 HelpInsight。

【讨论】:

  • 是的,我正在使用加速工具。有所作为!
  • 编译进度显示很遗憾没有显示每个单独的文件 - 而是显示 dpr 项目文件。失败的编译发生在“链接”阶段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 2012-12-19
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多