为什么断点是绿色的并且不起作用?
Why are breakpoints green and not working?
我正在尝试 运行 对我的代码进行调试,但不知何故它停止工作了。这是一个片段及其显示的绿线:
- 我试图右键单击我的项目并
clean
它。
- 尝试过
删除临时文件,如
.stat
和 .dcu
.
- 来回切换到
Release
和 Debug
模式,重建,重新编译它们。
Project -> Options -> Delphi compiling
下的Debugging
选项全部设置为true。
- 检查
search paths
中是否没有重复文件。
- 其他项目运行正常。
- 也试过骂人
我做错了什么?
这是一种正常的编译器行为。当从未从程序内部的任何地方调用过程(代码行)时,就会发生这种情况。编译器会跳过此类过程和函数(其中的所有代码行)。
看图
您只需要检查程序(行)是否真的至少从应用程序中的任何地方调用过一次。
追加
当永远无法调用代码行并且可以在编译时评估此(逻辑语句)(结果是预先知道的并且在运行时不会受到影响)时也会发生这种情况。编译器优化了跳过这些行的代码。这就是为什么它不接受休息时间。
这里是后一个程序的反汇编。第37、38行的if false then ...
语句省略:
添加到 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\objects 文件夹中手动删除 DCU 文件(结合上面的 .inc 文件)应该可以保证断点再次工作(至少在 DEBUG 版本中)。
我正在尝试 运行 对我的代码进行调试,但不知何故它停止工作了。这是一个片段及其显示的绿线:
- 我试图右键单击我的项目并
clean
它。 - 尝试过
删除临时文件,如
.stat
和.dcu
. - 来回切换到
Release
和Debug
模式,重建,重新编译它们。 Project -> Options -> Delphi compiling
下的Debugging
选项全部设置为true。- 检查
search paths
中是否没有重复文件。 - 其他项目运行正常。
- 也试过骂人
我做错了什么?
这是一种正常的编译器行为。当从未从程序内部的任何地方调用过程(代码行)时,就会发生这种情况。编译器会跳过此类过程和函数(其中的所有代码行)。 看图
您只需要检查程序(行)是否真的至少从应用程序中的任何地方调用过一次。
追加
当永远无法调用代码行并且可以在编译时评估此(逻辑语句)(结果是预先知道的并且在运行时不会受到影响)时也会发生这种情况。编译器优化了跳过这些行的代码。这就是为什么它不接受休息时间。
这里是后一个程序的反汇编。第37、38行的if false then ...
语句省略:
添加到 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\objects 文件夹中手动删除 DCU 文件(结合上面的 .inc 文件)应该可以保证断点再次工作(至少在 DEBUG 版本中)。