| Bug # | Delphi versions | Description |
| 246 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
GPF error when using PCTools for Windows or Plug-In for Windows as the Windows shell. |
| 247 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
Some properties are not correct in watch list and evaluator. |
| 248 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
Breakpoints are not always handled correctly during certain delete operations. The breakpoint is still there, but there is no colour indicating so. Happens when lines are shifted in certain ways -- when moving blocks and so on. |
| 249 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
Sometimes in the Evaluate dialog, when an expression raises an exception, Delphi crashes (!) instead of simply saying "Exception raised" or similarly. |
| 250 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
The debugger can't locate the source lines of exceptions that occur in routines that were compiled without debug information. For example, if you drop a button and a table on a form, and have the button do Table1.Active := true, you'll get an exception because you haven't set up the table properly. The debugger won't show you the source line, because the VCL was compiled without debug information (an optimization). If you have the VCL source code, it's possible to recompile with debugging
information, but then the debugger jumps to the spot in the VCL source
(or complains that it can't find it). This is often several calls away
from the call in your source code that you really want to know about, and
it's inconvenient to have to go back up the stack to find it.
|
| 251 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
Both the 'Watch list' and the 'Evaluate' dialog can't display embedded #0 characters in Strings, but truncate the strings at the #0 character. |
| 252 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
If you have a conditional breakpoint in your source and you are stepping through the program (with F8), when you step to the line where the conditional breakpoint is, it acts as a 'debugging boobytrap': the program doesn't stop on that line and also not on the next line; it just starts running again. |
| 253 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
Under certain conditions, when tracing into a procedure, the debugger watch window seems to get confused about the storage locations of variables. |
| 254 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
Under certain conditions, trying to set a breakpoint gives 'Breakpoint is set on line that may have been removed by the optimizer or contains no debug information' error. |
| 265 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
Application exceptions are often hidden _behind_ the application window and _behind_ Delphi. Ordinarily you'll just stare blankly at the screen and wonder why your app returned to the Delphi IDE so suddenly. The only indication of an error is the "Application error" button in the task bar. Seems that the exception dialogs get stuffed away now and then, more often than not |
| 266 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
Delphi's debugger does not recognise lines which end with LF, instead of CR-LF |
| 419 | 1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 |
There is a limitation in the integrated debugger: It has no breakpoint indicators past the 32766th source code line. |
Bug #246; last modified: before April 1998| 1.02 | 2.01 | 3.0 | 3.01 | 3.02 | 4.0 | 4.01 | 4.02 |
| Exists | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown |
Bug #247; last modified: before April 1998| 1.02 | 2.01 | 3.0 | 3.01 | 3.02 | 4.0 | 4.01 | 4.02 |
| Exists | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown |
value := ListBox1.Items.Count;Now, set a breakpoint on this line of code. Run the project and click the button. Execution will stop at this line of code. Display the watch list and add "ListBox1.Items.Count" to the watches. It displays a value of zero (0). However, when you step through this line of the program, you will find that the variable value contains the correct count.
Bug #253; last modified: before April 1998| 1.02 | 2.01 | 3.0 | 3.01 | 3.02 | 4.0 | 4.01 | 4.02 |
| Unknown | Exists | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown |
PROJECT FILE:
program Colors19;
{ This is an attempt to port colors19.pas to Delphi. }
uses Colors19MainUnit2 in 'Colors19MainUnit2.pas';
begin
ColorsMain;
end.
UNIT FILE:
unit Colors19MainUnit2;
interface
uses SysUtils;
procedure ColorsMain;
implementation
type goodpermtype = array[0..5] of byte;
procedure proc1(var c, d: integer; var b: boolean;
var goodperm: goodpermtype);
var
i: integer;
label
line1;
begin
line1:
for i := 0 to 5 do goodperm[i] := goodperm[i] + 1;
i := integer(@goodperm);
end;
procedure ColorsMain;
var
i, c, d: integer;
b: boolean;
goodperm: goodpermtype;
begin
for i := 0 to 5 do goodperm[i] := i;
proc1(c, d, b, goodperm);
end;
end.
I compile this with optimizations off (other settings do not seem to matter)
and run to the procedure call proc1(c,d,b,goodperm). Then I trace into
proc1 using F7. (This is important; if I run directly to the first line
of proc1 the bug doesn't happen.) Then I look at the following watches:
goodperm ColorsMain.goodperm @goodperm @ColorsMain.goodperm @i(using hex display)
I have not gotten this bug to happen without having a label (hence the useless label; in my original 1,000-line program it wasn't useless). I can change the numbers and kinds of variables in the procedure call, but not everything works: for instance, I cannot take away an integer; I can take away the boolean and replace with an integer; I can add an integer. Maybe it would happen with any three or more var parameters before the var goodperm parameter; I haven't tried all of the possible permutations.
Next, I change byte to integer in the definition of goodpermtype. Now if I trace into the first line of proc1 the value of @goodperm is zero (nil). Then if I trace past the "for i:=0 to 5" line the value of @goodperm becomes 1. So apparently the debugger thinks the value of the address of goodperm is stored at @goodperm[0] in this example.
Bug #254; last modified: before April 1998| 1.02 | 2.01 | 3.0 | 3.01 | 3.02 | 4.0 | 4.01 | 4.02 |
| Unknown | Gotcha | Gotcha | Gotcha | Gotcha | Gotcha | Gotcha | Gotcha |
Bug #266; last modified: before April 1998| 1.02 | 2.01 | 3.0 | 3.01 | 3.02 | 4.0 | 4.01 | 4.02 |
| Unknown | Exists | Exists | Unknown | Unknown | Unknown | Unknown | Unknown |
Note from checker:
I was able to reproduce the error with the debugger, but not the error
with the edit/search function. Interestingly enough, Delphi has no
trouble saving, loading and compiling with LF-terminated lines.
However I was unable to persuade the editor to replace the LFs with
CR-LFs.
Bug #419; last modified: 31-May-98| 1.02 | 2.01 | 3.0 | 3.01 | 3.02 | 4.0 | 4.01 | 4.02 |
| N/A | N/A | Exists | Exists | Exists | Unknown | Unknown | Unknown |
Markus Gölzner:
Yes, there is a limit (in the compiler, linker, debugger or IDE). We
encountered the same problem and opened a support incident with Borland
Support Germany. They told us it is a bug and their developers are aware of
the problem. Maybe D4 will solve this issue. Currently the only solution I
know is to split such a big unit into smaller ones.