AGB  ·  Datenschutz  ·  Impressum  







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

Aufruf-Stack mit JclDebug

Ein Thema von Ganymed · begonnen am 18. Jan 2005 · letzter Beitrag vom 4. Feb 2010
Antwort Antwort
Ganymed

Registriert seit: 11. Jun 2003
Ort: Hameln
56 Beiträge
 
Delphi 7 Architect
 
#1

Aufruf-Stack mit JclDebug

  Alt 18. Jan 2005, 11:18
Hi!

Ich möchte bei einer Exception zur Laufzeit des Programmes, also ohne Vorhandensein der IDE, den Call-Stack abfragen. Hier im Forum wurde dazu die Methode ProcByLevel() aus JCLDebug empfohlen.
Um das mal auszutesten, habe ich mir ein kleine Progi gemacht mit einem Button, der eine Exception auslöst.
Der "Call-Stack", den ich von Jedi bekomme, sieht leider nicht so aus, wie ich ihn gerne hätte:
Code:
'Fehler' is not a valid integer value
--- Call-Stack: ---
TForm1.ExceptionHandler
TApplication.HandleException
StdWndProc
TWinControl.DefaultHandler
TWinControl.WndProc
StdWndProc
Project1
Der Call-Stack zieht sich hoch bis zu Exception-Handler, statt beim TForm1.Button1Click() stehen zu bleiben. Ich denke zwar, dass ich verstehe wieso das so ist, trotzdem ist es nicht schön.
Was nicht nur unschön, sondern auch wenig hilfreich ist, ist dass die Methode, in der die Exception wirklich aufgetreten ist (TForm1.Button1Click()) gar nicht auftaucht, sondern stattdessen nur von "TWinControl.DefaultHandler" und "TWinControl.WndProc" die Rede ist...
Außerdem fehlen die übergebenen Parameter voll und ganz.

Muss man außer in den Projektoptionen noch etwas einstellen?
Oder kann man das noch irgendwie anders machen? Was ist z.B. mit TJclStackInfoList?

TIA

Ganymed
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Aufruf-Stack mit JclDebug

  Alt 18. Jan 2005, 13:32
Probier mal die Funktion JclLastExceptStackListToStrings.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Aufruf-Stack mit JclDebug

  Alt 18. Jan 2005, 13:34
Bei der JCL ist auch ein Demo-Project namens StackTrackExample.dpr dabei.
Wenn man die Compiler-Option Stack-Frames und die Linker-Option TD32-Debug Info aktiviert, dann
sind enthält der Stack Trace (fast) alle gewünschten Daten.
Andreas
  Mit Zitat antworten Zitat
Ganymed

Registriert seit: 11. Jun 2003
Ort: Hameln
56 Beiträge
 
Delphi 7 Architect
 
#4

Re: Aufruf-Stack mit JclDebug

  Alt 18. Jan 2005, 13:46
@shmia:
Ich hab mir das Demo angesehen, aber es zeigt auch nicht viel Anderes, als mein Testprojekt... Selbst mit der Option TD32-Debug Info

@Bernhard Geyer: JclLastExceptStackListToStrings() wird im StackTrackExample.dpr verwendet, mit eben wenig anderen Ergebissen...
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Aufruf-Stack mit JclDebug

  Alt 20. Jan 2005, 11:46
map-files anschalten!

td32 bringt imho nix
  Mit Zitat antworten Zitat
Benutzerbild von fylo
fylo

Registriert seit: 18. Feb 2004
Ort: Rostock
155 Beiträge
 
Delphi 7 Personal
 
#6

Re: Aufruf-Stack mit JclDebug

  Alt 20. Jan 2005, 21:31
hi
Zitat von generic:
map-files anschalten!

td32 bringt imho nix
bei mir ist es genau andersrum
have fun
fylo
  Mit Zitat antworten Zitat
legoracer

Registriert seit: 4. Feb 2010
1 Beiträge
 
#7

Re: Aufruf-Stack mit JclDebug

  Alt 4. Feb 2010, 14:20
hatte dasselbe problem, dass die eigtl. Adresse nicht in der
Stackliste ist, und es so gelöst:

die genaue Adresse der Codezeile lässt sich mit ExceptAddr abfragen,
und das debug info - z.B. in einem try except block ungefähr so darstellen:

try
..
except on e : exception do
showmessage(TextualDebugInfoForAddress(Cardinal(Ex ceptAddr)));
end;
  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 22:36 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