Einzelnen Beitrag anzeigen

arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#1

Adresse einer Funktion ermitteln

  Alt 16. Jun 2007, 19:50
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
  Mit Zitat antworten Zitat