lazarus/components/lazdebuggers/lazdebuggerfp/test/testapps/BreakPointThreadPrg.pas
martin 5b2858fe15 FpDebug: Test for breakpoints in threads
git-svn-id: trunk@61835 -
2019-09-08 19:03:03 +00:00

110 lines
2.0 KiB
ObjectPascal

program BreakPointThreadPrg;
{$ASMMODE att}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
sysutils, Classes;
type
{ TTestThread }
TTestThread = class(TThread)
procedure Execute; override;
end;
var
x, BreakDummy: Integer;
{$asmMode intel}
label
testasmlbl1, testasmlbl2;
{ TTestThread }
procedure TTestThread.Execute;
begin
asm
nop // TEST_BREAKPOINT=BrkThreadBegin
xor eax, eax
xor ebx, ebx
add eax, 10
testasmlbl1:
sub eax, 10
add eax, 1 // TEST_BREAKPOINT=BrkThread1
add eax, 1 // TEST_BREAKPOINT=BrkThread2
add eax, 1 // TEST_BREAKPOINT=BrkThread3
add eax, 1 // TEST_BREAKPOINT=BrkThread4
add eax, 1 // TEST_BREAKPOINT=BrkThread5
add eax, 1 // TEST_BREAKPOINT=BrkThread6
add eax, 1 // TEST_BREAKPOINT=BrkThread7
add eax, 1 // TEST_BREAKPOINT=BrkThread8
add eax, 1 // TEST_BREAKPOINT=BrkThread9
add eax, 1 // TEST_BREAKPOINT=BrkThread10
add ebx, 1 // TEST_BREAKPOINT=BrkThreadIncLoop
jmp testasmlbl1 // TEST_BREAKPOINT=BrkThread11
nop
nop // TEST_BREAKPOINT=BrkThreadEnd
end;
end;
begin
TTestThread.Create(False);
TTestThread.Create(False);
TTestThread.Create(False);
TTestThread.Create(False);
TTestThread.Create(False);
sleep(100);
TTestThread.Create(False);
TTestThread.Create(False);
TTestThread.Create(False);
TTestThread.Create(False);
TTestThread.Create(False);
sleep(500);
BreakDummy := 1;
asm
nop // TEST_BREAKPOINT=BrkMainBegin
xor eax, eax
xor ebx, ebx
add eax, 20
testasmlbl2:
sub eax, 20
add eax, 1 // TEST_BREAKPOINT=BrkMain1
add eax, 1
add eax, 1
add eax, 1
add eax, 1
add eax, 1 // TEST_BREAKPOINT=BrkMain2
add eax, 1
add eax, 1
add eax, 1
add eax, 1
add eax, 1 // TEST_BREAKPOINT=BrkMain3
add eax, 1
add eax, 1
add eax, 1
add eax, 1
add eax, 1
add eax, 1
add eax, 1
add eax, 1
add eax, 1
add ebx, 1
jmp testasmlbl2
nop
nop // TEST_BREAKPOINT=BrkMainEnd
end;
end.