mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-19 16:22:50 +02:00
121 lines
1.9 KiB
ObjectPascal
121 lines
1.9 KiB
ObjectPascal
program BreakPointPrg;
|
|
{$ASMMODE att}
|
|
uses
|
|
{$IFDEF UNIX}
|
|
cthreads,
|
|
{$ENDIF}
|
|
sysutils, Classes;
|
|
|
|
type
|
|
|
|
{ TTestThread }
|
|
|
|
TTestThread = class(TThread)
|
|
procedure Execute; override;
|
|
end;
|
|
|
|
|
|
var
|
|
x, BreakDummy: Integer;
|
|
|
|
procedure Foo1;
|
|
begin
|
|
BreakDummy:= 1; // TEST_BREAKPOINT=Foo1
|
|
end;
|
|
|
|
procedure Foo2;
|
|
var
|
|
i: Integer;
|
|
begin
|
|
for i := 0 to 1 do
|
|
BreakDummy:= 1; // TEST_BREAKPOINT=Foo2
|
|
end;
|
|
|
|
|
|
label
|
|
testasmlbl1, testasmlbl2;
|
|
|
|
{ TTestThread }
|
|
|
|
procedure TTestThread.Execute;
|
|
var
|
|
tt: Integer;
|
|
begin
|
|
tt := 1; // TEST_BREAKPOINT=Thread1
|
|
tt := 1; // TEST_BREAKPOINT=Thread2
|
|
tt := 1;
|
|
while true do begin
|
|
tt := 1;
|
|
tt := 1;
|
|
tt := 1;
|
|
tt := 1;
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
x := 1;
|
|
x := 1; BreakDummy:= 1; // TEST_BREAKPOINT=PrgStep1
|
|
x := 1; BreakDummy:= 1; // TEST_BREAKPOINT=PrgStep2
|
|
|
|
x := 1; BreakDummy:= 1; // TEST_BREAKPOINT=PrgRun1
|
|
x := 1; BreakDummy:= 1; // TEST_BREAKPOINT=PrgRun2
|
|
|
|
asm
|
|
nop // TEST_BREAKPOINT=AsmStep1
|
|
nop // TEST_BREAKPOINT=AsmStep2
|
|
nop // TEST_BREAKPOINT=AsmRun1
|
|
nop // TEST_BREAKPOINT=AsmRun2
|
|
nop
|
|
jmp testasmlbl1 // TEST_BREAKPOINT=AsmBranch1
|
|
nop
|
|
nop // TEST_BREAKPOINT=AsmNever1
|
|
testasmlbl1:
|
|
nop // TEST_BREAKPOINT=AsmBranchEnd1
|
|
nop
|
|
jmp testasmlbl2 // TEST_BREAKPOINT=AsmBranch2
|
|
nop
|
|
nop // TEST_BREAKPOINT=AsmNever2
|
|
testasmlbl2:
|
|
nop // TEST_BREAKPOINT=AsmBranchEnd2
|
|
nop
|
|
end;
|
|
|
|
x := 1;
|
|
Foo1;
|
|
Foo1;
|
|
Foo1;
|
|
|
|
x := 1;
|
|
Foo2;
|
|
BreakDummy:= 1; // TEST_BREAKPOINT=PrgAfterFoo2
|
|
|
|
BreakDummy:= 1; // TEST_BREAKPOINT=New1
|
|
BreakDummy:= 1; // TEST_BREAKPOINT=New2
|
|
BreakDummy:= 1;
|
|
|
|
// TODO; stepping over ignored breakpoint / actually that is stepping test
|
|
// edit line / move breakpoint
|
|
|
|
TTestThread.Create(False);
|
|
while true do begin
|
|
asm
|
|
nop
|
|
nop // TEST_BREAKPOINT=Main1
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop // TEST_BREAKPOINT=Main2
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|