为什么断点是绿色的,不起作用?

Oh *_*ooo 5 delphi delphi-10-seattle

我试图在我的代码上运行调试,但不知何故它停止工作.这是一个片段和它显示的绿线:

片段

  • 我试图右键单击我的项目和clean它.
  • 试图删除临时文件,如.stat.dcu.
  • 来回切换ReleaseDebug模式,重建,重新编译它们.
  • 下面的Debugging选项Project -> Options -> Delphi compiling都设置为true.
  • 检查中是否没有重复文件search paths.
  • 其他项目正常运作.
  • 也试过咒骂.

我究竟做错了什么?

asd*_*-tm 7

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

在此输入图像描述

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

附加

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

在此输入图像描述

这是后一种程序的反汇编.第if false then ...37和38行的陈述被省略:

在此输入图像描述