![]() |
Exception variablen/parameter sichern
Wie kann ich im OnException die parameter der aktuellen Funktion auslesen und idealerweise auch noch die variablen ... ?
Die müssten ja alle auf den Stack liegen, ich bräuchte dann ja nur mehr den stackpointer, zu wissen von wo bis wo der bereich geht (Aber der Stackpointer ändert sich ja bei einer exception ... ?) und dann diesen bereich in ein dump file kopieren. Anschließend brauche ich nur noch eine Möglichkeit diesen speicherbereich auf die variablennamen zu mappen ? Gibt es da Möglichkeiten für? |
Re: Exception variablen/parameter sichern
Willst du den Zustand beim Eintreten der Exception haben oder vor dem "try"?
|
Re: Exception variablen/parameter sichern
|
Re: Exception variablen/parameter sichern
Zitat:
madexcept wäre sicher auch ne alternative, aber bis auf den stack, die cpu register und den asm code habe ich auch schon alles. aber ich vermute das schwierigste wird dann eh noch das mappen des stacks auf die variablen, parameter ... |
Re: Exception variablen/parameter sichern
Beim Eintreten der Exception werden alle Register gerettet. Wenn du in deine Exceptionbehandlung kommst liegt bei [ESP+4] oder [ESP+8] ein Record in dem alle Register stehen.
Edit: bei [ESP+4] (bei [ESP+8] liegt ja der Stackpointer wie er vor dem "try" war) und bei [ESP] liegen die Exception-Informationen (Exception-Code, etc.) in einem Record. Also bei [ESP+4] sollte ein Pointer auf folgenden Record liegen: Zitat:
![]() |
Re: Exception variablen/parameter sichern
besten dank, werd mir den artikel mal genauest durchlesen ...
|
Re: Exception variablen/parameter sichern
nicht alles liegt im Stack.
zu Strings, dynamischen Arrays, Objekten und Derartigem liegt z.B. nur ein Pointer dahin eventuell dort, aber es steht nirgendwo, was ein Pointer, oder z.B. ein "normaler" Integer ist. einige Variablen, wie z.B. nur kurzzetig genutzte Integer liegen aufgrund einer Optimierung einfach nur in den Registern. .... Also, was genau willst du denn nun bewirken? Ein Weg, wo man trotz Exception Parameter aus 'ner Funktion rausbekommt, sind Var-Parameter und nicht-lokale Variablen. Diese werden ja direkt geändert und bleiben dann bei der Exception natürlich im letzten Zustand. |
Re: Exception variablen/parameter sichern
Ja, selber querlesen ist besser als die Infos aus meinem Kopf :mrgreen: Bei solchen Sachen vertue ich mich auch ständig und die richtigen Referenzen finde ich dann einfach indem ich mal durchdebugge :thumb:
|
Re: Exception variablen/parameter sichern
Zitat:
das ich bei strings und objekten (einstweilen) nur einen pointer bekomme ist mir mal klar. |
Re: Exception variablen/parameter sichern
Na eigentlich brauchst du dafür nur den EBP (und zwar vor dem "try"). Ist deine funktion reiner Assembler oder ein Pascal-ASM-Mix?
sonst müsstest du noch überprüfen (über EIP) wo der Fehler aufgetreten ist, also ob er innerhalb deiner Funktion...naja, da muss man so einiges testen und probieren...good luck! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz