Hallo zusammen,
ich möchte gerne die Adresse einer Prozedur ermitteln. Diese möchte ich dann in den
IDE Dialog Laufzeitfehler suchen eingeben um an die entsprechende Quellcodezeile springen zu können.
Derzeit mache ich das so (exemplarisch)
Delphi-Quellcode:
procedure TDummy.Procedure1();
var Address: Pointer;
begin
asm
mov eax, [ebp+04]
dec eax
mov [Address], eax
end;
Address ausgeben;
end;
procedure TDummy.Procedure2();
var Address: Pointer;
begin
asm
mov eax, [ebp+04]
dec eax
mov [Address], eax
end;
Address ausgeben;
end;
procedure TForm1.Button1Click(Sender: TObject)
begin
Dummy.MyProcedure1; -> hier soll Laufzeitfehler suchen hinspringen bei Procedure1
Dummy.MyProcedure2; -> entsprechend hier bei Procedure2
end;
Den Assembler Part möchte ich nicht in jeder Funktion der TDummy Klasse wiederholen. Ich würde mir eine Funktion GetAddress wünschen.
Delphi-Quellcode:
function TDummy.GetAddress: Pointer;
begin
asm
????
end;
end;
procedure TDummy.MyProcedure1;
var Address: Pointer;
begin
Address := GetAddress;
Address ausgeben
end;
procedure TForm1.Button1Click(Sender: TObject)
begin
Dummy.MyProcedure1;
end;
Die 3 Zeilen Assembler habe ich in mühseliger Kleinarbeit im CPU Fenster abgeguckt, für mein Vorhaben mit der Funktion GetAddress reichen meine Kenntnisse aber offensichlich nicht aus. Ich hoffe jemand von euch kann mir da weiterhelfen.
VG
Arno