[delphi] Runtime stack trace

Pagina: 1
Acties:
  • 102 views sinds 30-01-2008
  • Reageer

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Ik ben een - mag ik wel zeggen - ervaren delphi-programmeur, maar ik stuit nu toch op iets waar ik nog geen kaas van gegeten heb. Ik wil, zoals mijn topictitel al suggereert, een stack-trace maken in runtime.

Scenario:
Ik heb een applicatie gemaakt in Delphi 5 Pro, met een AppEvents component erin, waarmee ik OnException afvang om vervolgens een net fout-dialoogje weer te geven. In dat dialoogje zit ook een knopje "Report", waarmee een rapportje gegenereerd wordt met wat info over de PC waar het op draait en de foutmelding. Nu wil ik in dat rapportje dus ook een stack-trace opnemen, vanaf het punt waar de exception plaatsvond (uiteraard).

Wat heb ik al geprobeerd:
Er zijn een aantal componenten op internet te krijgen (ook wel freeware) die een stack-trace doen. Ze vereisen dan dat je een MAP-bestand laat genereren door de compiler. Geen probleem. Ze geven ook keurig de naam van de procedures en regelnummers enzo mee. Maar: ze lijken allemaal te tracen vanaf het moment dat op het Report-knopje gedrukt wordt, en dan is de exception al afgehandeld. Sterker nog, de procedure waarin de exception plaatsvond, staat in de hele stack-trace er dan niet eens bij.

Dus wat zoek ik:
Een componentje die automagisch bij een exception een stack-trace maakt vanaf de procedure waarin de exception ontstond. Met in die stack-trace namen van de procedures en regelnummers (net als de debug-time stack-trace van delphi zelf).

Ik hoop dat het een beetje duidelijk is... Bedankt alvast ;)

日本!🎌


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

code:
1
2
3
4
5
try
   doeiets
except
   doe die code van dat 'report'-knopje
end

Of denk ik dan te simpel :?

't is natuurlijk niet leuk om iedere try...except om te bouwen in je source...

Siditamentis astuentis pactum.


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Je denkt te simpel, ik doe het met AppEvents.OnException, en niet met try..except statements.

日本!🎌


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23-08 21:27

Creepy

Tactical Espionage Splatterer

www.madshi.net, en dan het object MadExcept.

zie ook [rml][ delphi] collection framework, mvc support.[/rml] (de search is zo gek nog niet ;) )

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
madshi is goed maar niet gratis voor commercieel gebruik. http://sourceforge.net/projects/jcl/ de Jedi Code Library (zowiezo erg aan te raden) bevat ook strack tracing

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
De JCL had ik al geprobeerd, maar die vind ik niet echt lekker werken. Madshi ook niet, maar die doet iig wat ik verwacht. (de stack tracen vanaf de exception, en niet vanaf het report-knopje).

Als het wat kost, mwa. Als het dan maar wel werkt.

日本!🎌


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

De JCL doet ook hetzelfde als Madshi. Als je problemen hebt met JCL is er iets mis gegaan ergens.

In het topic waar Creepy het over had heb ik nog een ander pakket genoemd.
http://dimus.virtualave.net/

We adore chaos because we like to restore order - M.C. Escher


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb nu Madshi al gekocht. Deze kwam als beste uit mijn test, mede omdat het in 1 keer goed werkt, maar ook omdat Madshi controleert op oneindige loops en deadlocks. Hij kan geloof ik ook netjes omgaan met recursieve procedures (die tig keer zichzelf aanroepen) maar dat heb ik nog niet getest.

edit: en ExceptionalMagic is duurder :)

[ Voor 7% gewijzigd door _Thanatos_ op 04-03-2003 12:38 ]

日本!🎌

Pagina: 1