Hallo,
manchmal ist es notwendig an einer bestimmten Stelle beim Debuggen anzuhalten.
Normalerweise verwendet man dazu einen Breakpoint.
Es geht aber auch anders:
Delphi-Quellcode:
begin
...
i := 0;
asm
int 3
end;
i := 1;
// <- hier bleibt Delphi im Debugger stehen !!!
...
end;
Das Programm bringt aber außerhalb von Delphi an dieser Stelle eine externe
Exception (Fehlermeldung)
Aber man könnte sich z.B. eine Procedure schreiben die Prüft ob Delphi läuft und dann int 3 aufruft.
Delphi-Quellcode:
procedure myBreakPoint;
begin
if (DebugHook <> 0)
then asm int 3
end;
end;
// <- Delphi bleibt dann hier stehen.
// 1 x F8 drücken und man ist da wo man hin will ;-)
...
if i>5
then myBreakPoint;
...
Oder man könnte es bei der bedingten Kompilierung einsetzten:
Delphi-Quellcode:
...
{$IFDEF DEBUG}asm int 3
end;
{$ENDIF} // Breakpoint
...
In meinen Quellcodes findet man ab und zu so was:
Delphi-Quellcode:
...
{$IFDEF DEBUG}if (i>5)
and (DebugHook <> 0)
then asm int 3
end;
{$ENDIF} // Breakpoint
...
(i>5) ist die Bedingung bei der Angehalten werden soll.
Ich hoffe das hilft Euch
Euer
Dr. MaBuSE