AGB  ·  Datenschutz  ·  Impressum  







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

Klassenfunktionen überwachen

Ein Thema von backdraft · begonnen am 31. Mär 2008 · letzter Beitrag vom 3. Apr 2008
Antwort Antwort
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#1

Klassenfunktionen überwachen

  Alt 31. Mär 2008, 22:31
Hallo zusammen,

ich suche eine Möglichkeit eine Klasse von aussen zu überwachen.
Dh. ich hab meine Klasse XYZ und möchte quasi ein event haben, wenn eine Funktion der Klasse aufgerufen wird.

Grund dafür ist, dass ich öfter mal wissen möchte, welche Funktionen meiner Klasse, in welcher Reihenfolge aufgerufen werden.

Vielleicht gibt es ja in Delphi eine Funktion dafür, für GetMem/FreeMem hab ich sowas gefunden (TMemoryManager).

Irgendwie muss der DelphiDebugger das ja auch mitkriegen, wenn ich an eine Stelle im Sourcecode komme.

Danke
Oliver
Oliver
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Klassenfunktionen überwachen

  Alt 31. Mär 2008, 22:35
Das müsstest du manuell implementieren oder du verwendest einen Profiler.
Markus Kinzler
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Klassenfunktionen überwachen

  Alt 31. Mär 2008, 22:55
Zitat von mkinzler:
Das müsstest du manuell implementieren oder du verwendest einen Profiler.
wie macht der das?
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Klassenfunktionen überwachen

  Alt 31. Mär 2008, 23:15
Zitat von backdraft:
Zitat von mkinzler:
Das müsstest du manuell implementieren oder du verwendest einen Profiler.
wie macht der das?
Er hängt entsprechend an jeder Einsprung und Rücksprung-Adresse seine Überwachungs-Calls rein. Funktioniert aber (mit entsprechender sprechender Ausgabe) nur wenn genügend Debuginfos (TD32-Debuginfos) in der Exe vorhanden sind. AQTime ist z.B. ein erstklassiger Profiler welcher Callgraphen bietet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Klassenfunktionen überwachen

  Alt 31. Mär 2008, 23:31
und ich hab keine chance das in meiner anwendung zu überwachen?

wie doof ist das denn, dass ein programm von aussen mehr kann, als ich innerhalb meines programms?
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Klassenfunktionen überwachen

  Alt 31. Mär 2008, 23:34
Zitat von backdraft:
Irgendwie muss der DelphiDebugger das ja auch mitkriegen, wenn ich an eine Stelle im Sourcecode komme.
Der Debugger überschreibt den 1. Befehl einer Funktion mit INT 3 und merkt sich den alten OPcode.
Wird der Debugger über INT 3 aufgerufen, dann stellt er den alten Opcode wieder her.
Dieses Verfahren kommt so für dich aber nicht in Frage.

Dann gäbe es da noch Profiler, die alle Funktionsaufrufe protokollieren und vorallem die Zeit messen.
Ist es dass, was dich interessiert ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Klassenfunktionen überwachen

  Alt 31. Mär 2008, 23:38
Doch, du musst es halt selber machen.
ein weiterer Profiler wäre ProDelphi. Ist nicht so mächtig wie AQTime aber es gibt eine Freeware-Version davon
Markus Kinzler
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Klassenfunktionen überwachen

  Alt 31. Mär 2008, 23:51
Also zurzeit habe ich halt in jede Funktion der Klasse ein

Log("bin in Funktion XYZ");

Das wollte ich einfach automatisieren.
Mich interessiert auch nicht, wie lange er für was gebraucht hat, sondern die Reihenfolge, wann welche Funktion aufgerufen wurde.

Meistens habe ich bei Windows Funktionen Probleme, weil ich nicht weiss in welcher Reihenfolge sie kommen (Create, Loaded, CreateWND, usw).

Ich dachte man kann das irgendwie automatisch machen.
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Klassenfunktionen überwachen

  Alt 3. Apr 2008, 02:51
Im Debugger kann man sich den Stack anschauen und erfährt so die Reihenfolge der Funktionen.
Man kann bei Auftreten einer Exception das Programm veranlassen einen Stacktrace auszugeben (auch ohne Debugger). (z.B. mit MadExcept oder JCL)
Das sollte eigenlich reichen, denn die Reihenfolge der Funktionen interessiert ja nur bei der Fehlersuche.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: Klassenfunktionen überwachen

  Alt 3. Apr 2008, 09:05
Du könntest die zu überwachenden Methoden alle dynamisch deklarieren und dann die dynamische Methodentabelle umschreiben.
Aber ich sehe, wie meine Vorredner auch, dies alles eher in der Funktion eines geeigneten Debuggers.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  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 16:35 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