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

时间:2015-10-13 11:22:30

标签: delphi delphi-10-seattle

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

snippet

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

我做错了什么?

2 个答案:

答案 0 :(得分:7)

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

DigitalOcean: Installing and configuring VNC

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

<强>追加

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

enter image description here

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

enter image description here

答案 1 :(得分:1)

从asd-tm添加答案,我在所有单位中都包含以下行:

$(document).ready(function() {
    $("#visa_status").change(function(){
        var selectedCountry = $(this).val();
        alert(selectedCountry);
    });
});

在ProjOptions.inc文件中,我包含以下代码:

unit SomeRandomUnit;
{$I ProjOptions.inc}

通过这种方式,当我调试时,优化已关闭并且调试信息已打开,而我不必担心在Project&gt;中意外切换内容。选项。从PROJECT \ objects文件夹手动删除DCU文件(与上面的.inc文件结合使用)应该保证断点再次起作用(至少在DEBUG版本中)。