delphidelphi-10-seattle

Why are breakpoints green and not working?


I am trying to run a debug on my code, but somehow it stopped working. Here is a snippet and the green lines it is showing:

snippet

What am I doing wrong?


Solution

  • It is a kind of normal compiler behaviour. It ever happens when the procedure (code line) is never called from anywhere inside your program. Compiler skips such procedures and functions (all the code lines within them). See the picture.

    enter image description here

    You just need to check if the procedure (line) is really at least once called from anywhere inside your application.

    Appended

    This also takes place when the code line can never be called and this (the logic statement) can be evaluated at compilation (the result is known in advance and can not be affected at runtime). The compiler optimizes the code skipping such lines. That is why it does not accept breaks at them.

    enter image description here

    Here is a diassembly of the latter procedure. The if false then ... statement at lines 37 and 38 is omitted:

    enter image description here