AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception variablen/parameter sichern

Ein Thema von Gruber_Hans_12345 · begonnen am 13. Mär 2007 · letzter Beitrag vom 13. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#1

Exception variablen/parameter sichern

  Alt 13. Mär 2007, 09:09
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?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 09:22
Willst du den Zustand beim Eintreten der Exception haben oder vor dem "try"?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 09:26
Hallo Hans,

vielleicht genügt dir schon der stack dump von madexcept?

Freundliche Grüße
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 09:49
Zitat von sirius:
Willst du den Zustand beim Eintreten der Exception haben oder vor dem "try"?
eigentlich wäre der zustand beim eintreten der exception ideal ... aber mir würde schon irgendeiner reichen.


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 ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 10:18
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:
+0 context flags
(used when calling GetThreadContext)
DEBUG REGISTERS
+4 debug register #0
+8 debug register #1
+C debug register #2
+10 debug register #3
+14 debug register #6
+18 debug register #7
FLOATING POINT / MMX registers
+1C ControlWord
+20 StatusWord
+24 TagWord
+28 ErrorOffset
+2C ErrorSelector
+30 DataOffset
+34 DataSelector
+38 FP registers x 8 (10 bytes each)
+88 Cr0NpxState
SEGMENT REGISTERS
+8C gs register
+90 fs register
+94 es register
+98 ds register
ORDINARY REGISTERS
+9C edi register
+A0 esi register
+A4 ebx register
+A8 edx register
+AC ecx register
+B0 eax register
CONTROL REGISTERS
+B4 ebp register
+B8 eip register
+BC cs register
+C0 eflags register
+C4 esp register
+C8 ss register
Infos von hier
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 10:27
besten dank, werd mir den artikel mal genauest durchlesen ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 10:28
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 10:38
Ja, selber querlesen ist besser als die Infos aus meinem Kopf Bei solchen Sachen vertue ich mich auch ständig und die richtigen Referenzen finde ich dann einfach indem ich mal durchdebugge
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 10:57
Zitat von himitsu:
nicht alles liegt im Stack.

Also, was genau willst du denn nun bewirken?
ich möchte gerne im falle eines falles (wenn dann doch mal eine exception auftritt) so viele infos wie möglich sammeln, und da wäre es teils extrem hilfreich, wenn man lokale variablen wieder restaurieren könnte (und auch die übergebenen parameter)

das ich bei strings und objekten (einstweilen) nur einen pointer bekomme ist mir mal klar.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Exception variablen/parameter sichern

  Alt 13. Mär 2007, 11:02
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!
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz