Delphi 为什么断点是绿色的并且不工作?

Delphi 为什么断点是绿色的并且不工作?,delphi,delphi-10-seattle,Delphi,Delphi 10 Seattle,我试图对我的代码运行调试,但不知为什么它停止了工作。下面是一个代码段及其显示的绿色线条: 我尝试右键单击我的项目并清理它 尝试 要删除临时文件,如.stat和.dcu 来回切换到Release和Debug模式,重建、重新编译它们 Project->options->Delphi compiling下的debug选项都设置为true 检查搜索路径中是否没有重复文件 其他项目工作正常 我也试过咒骂 我做错了什么?这是一种正常的编译器行为。当过程(代码行)从未从程序中的任何地方调用时,就会发生这

我试图对我的代码运行调试,但不知为什么它停止了工作。下面是一个代码段及其显示的绿色线条:

  • 我尝试右键单击我的项目并清理它
  • 尝试 要删除临时文件,如
    .stat
    .dcu
  • 来回切换到
    Release
    Debug
    模式,重建、重新编译它们
  • Project->options->Delphi compiling
    下的
    debug
    选项都设置为true
  • 检查
    搜索路径中是否没有重复文件
  • 其他项目工作正常
  • 我也试过咒骂

我做错了什么?

这是一种正常的编译器行为。当过程(代码行)从未从程序中的任何地方调用时,就会发生这种情况。编译器跳过这些过程和函数(其中的所有代码行)。 请看图片

您只需要检查过程(行)是否真的至少从应用程序中的任何位置调用过一次

追加

当永远不能调用代码行并且可以在编译时对其(逻辑语句)进行计算(结果是预先知道的,并且在运行时不会受到影响)时,也会发生这种情况。编译器优化跳过这些行的代码。这就是为什么它不接受他们的休息

下面是后一个程序的分解。
如果为false,则省略第37行和第38行的…
语句:


除了asd tm的答案之外,我在我的所有单元中都包含以下行:

unit SomeRandomUnit;
{$I ProjOptions.inc}
在ProjOptions.inc文件中,我包含以下代码:

// Compiler switches:
//              Debug Info      Optimisation
// DEBUG            On              Off
// RELEASE          Off             On
{$IFDEF DBG}
    {$D+}
    {$O-}
{$ELSE}
    {$D-}
    {$O+}
{$ENDIF}

这样,当我调试时,优化功能关闭,调试信息打开,而不用担心在Project>Options中意外切换某些内容。从PROJECT\objects文件夹中手动删除DCU文件(与上面的.inc文件结合使用)应该可以保证断点再次工作(至少在调试版本中)。

您正在进行调试版本吗?如果咒骂没有帮助,我不知道该说什么。也许您在运行->参数->调试器->主机应用程序中有一个主机应用程序集不适合您的需要?或者在开始调试之前必须设置运行->附加到进程?尝试将
.dproj
文件重命名为其他文件,例如添加扩展名
.old
,然后重新加载项目。它将自动生成一个新的。当然,您可能会丢失一些设置,但这似乎是最简单的解决方案。请定期处理此问题。它存在于几个Delphi版本直到最新版本。我从来没有找到一种复制它的方法。尽管如此,为了使它再次工作,我遵循以下步骤:1)进行清理,2)停止IDE,3)进行完整构建。