AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Debuginformationen aufschlüsseln (StackBackTrace)
Thema durchsuchen
Ansicht
Themen-Optionen

Debuginformationen aufschlüsseln (StackBackTrace)

Ein Thema von himitsu · begonnen am 29. Okt 2009 · letzter Beitrag vom 29. Okt 2009
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

Debuginformationen aufschlüsseln (StackBackTrace)

  Alt 29. Okt 2009, 13:12
Windows liefert ja seit XP so schöne DebugInformationen .. z.B. Dieses:
Delphi-Quellcode:
Function CaptureStackBackTrace(FramesToSkip, FramesToCapture: LongWord;
  BackTrace: Pointer; Var BackTraceHash: LongWord): Byte; StdCall;
  External 'Kernel32.dllName 'RtlCaptureStackBackTrace';

Procedure TForm1.FormCreate(Sender: TObject);
  Var B: Byte;
    P: Array[0..62] of Pointer;
    H: LongWord;
    i: Integer;

  Begin
    FillChar(P, SizeOf(P), 255);
    B := CaptureStackBackTrace(0, 62, @P, H);
    Edit1.Text := Format('Hash:$%8.x ', [H]);
    For i := 0 to B - 1 do Edit1.Text := Edit1.Text + Format('$%p ', [P[i]]);
  End;
Hier stehen natürlich nur die Rücksprungzeiger drinnen.
StackFrames sollten besser an sein, sonst kann es sein, daß 'ne "kleine" Funktion einfach übersehn wird.

(von vorn nach hinten: die erste Adresse ist also die Rücksprungadresse hinter den Aufruf von CaptureStackBackTrace)

Nun meine Frage:
Direkt mit Delphi ist es da doch nich möglich aus den Zeigern Funktionsnamen zu machen?
Also selbst wenn man alle möglichen delphieigenen Debuginformationen in der EXE aktiviert hat.

Der Debugger kennt sie ja, aber die wird er wohl nur aus der .DCU rausholen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Debuginformationen aufschlüsseln (StackBackTrace)

  Alt 29. Okt 2009, 13:23
Doch, das geht. Leider ist das ein etwas längeres Thema und ich muss gleich zur Arbeit. Mehr dazu nachher.

Deshalb nur kurz die Frage: Wie wäre es mit madExcept z.B., wenn es um die Fehleranalyse geht? Das bringt diese Funktionen doch von Hause aus mit. Siehe Anhang.
Miniaturansicht angehängter Grafiken
divbyzeromadexcept_100.png  
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Debuginformationen aufschlüsseln (StackBackTrace)

  Alt 29. Okt 2009, 13:44
madExcept ist mir da etwas zu "mächtig" (groß), vorallem um es dauerhaft in der Anwendung zu lassen.

Ich hab ja angefangen mir 'ne eigene Exception-Klasse (Erweiterung von Exception) zu schreiben, welche halt nur noch ein paar hilfreiche Zusatzinfos mit anbieten
und die auch dauerhaft in Anwendungen drinnen bleibt.

Das Problem ist ja, daß zwar in einer Funktion der Fehler auftritt, aber dieses an irgendwelchen "inkorrekt" übergebenen Parametern irgendwo weiter vorne liegt.
Wenn diese Funktion jetzt an mehreren Stellen aufgerufen wird und man nur erfährt "hier ist ein Fehler passiert",
dann ist es nicht immer so einfach auch auf die Aufrufstelle zurückzuschließen.
Drum wäre ein StackTrace doch hilfreich.

Mir würden auch schon Zeilennummer und Unitnamen weiterhelfen (alle Funktionsnamen werden wohl schwierig sein)



Wenn passende Debuginformationen gefunden werden, dann nur würde ich gern noch die Namen wissen,
da man mit den blosen Adressen nicht immer was anfangen kann.

Aktuell hab ich diese Exception-Klasse in meinem himXML (worin sie auch entwickelt wurde) und Adressen fremder Anwendungen würden mir bei einer Fehleranalyse nicht viel helfen.

Es wäre auch schwieriger in fremde Applications einfach madAxcept einzufügen.
Drum erweitere ich NUR meine eigenen Exceptions und alle, welche davon abgeleitet sind
und in der Restlichen Application wird nichts verändert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:58 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