Delphi-PRAXiS
Seite 3 von 7     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Start und Stop jeder Methode Tracen an nur einer stelle Implementieren (https://www.delphipraxis.net/166648-start-und-stop-jeder-methode-tracen-nur-einer-stelle-implementieren.html)

Luckie 24. Feb 2012 07:40

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Hm, gibt es da nicht schon Software für? Profiler oder wie die sich nennt?

neo4a 24. Feb 2012 08:53

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Zitat:

Zitat von Daniel (Beitrag 1152617)
Zitat:

Zitat von Luckie (Beitrag 1152590)
Darf man mal fragen wozu du das brauchst?

Damit ließe sich quantitativ erfassen, welche Programmteile wie oft aufgerufen werden und dabei allein und in Summe wie viel Ausführungszeit benötigen.

Das oder auch die Testabdeckung der Schnittstellen eines Moduls...

Stevie 24. Feb 2012 09:39

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Zitat:

Zitat von Luckie (Beitrag 1152618)
Hm, gibt es da nicht schon Software für? Profiler oder wie die sich nennt?

Hast du den Thread überhaupt gelesen?

gibb 24. Feb 2012 10:26

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
:-D das mit dem Flag war keine Frage sondern eine Feststellung ;) das krieg ich noch gerade so hin...

Die frage ist nur wie schiebe ich das stückchien code allen Methoden unter die im Programm sind und das nur bei bedarf. Ansonsten möchte man ja diesen Code nicht unbedingt in jeder funktion finden ;)

daher müsste das irgendwie automatisch gehen. oder halt wie bereits gesagt eine stelle ganz weit hinten versteckt.


Gruss Gibb

himitsu 24. Feb 2012 10:51

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Zitat:

Zitat von gibb (Beitrag 1152662)
daher müsste das irgendwie automatisch gehen. oder halt wie bereits gesagt eine stelle ganz weit hinten versteckt.

Mehrere Die Wege hatte ich doch schonmal aufgezählt?

gibb 24. Feb 2012 11:04

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
ja aber ich habe die hoffnung nicht aufgegeben das es einen einfacheren weg gibt ;)

Zitat:

Entweger man sucht sich nachträglich (nach dem Kompilieren) aus den erweiterten Debuginfos die Methoden-Anfänge (erste Codezeile) und deren Ende (letzte Codezeile)
und patcht sich dann überall einen Funktionsaufruf (Logfunktion) rein, bzw. erstellt überall dort Haltepunkte, auf die ein eigener Debugger hört.

Oder man baut sich einen Precompiler, welcher vor dem compilieren die Quellcodes parst und überall diese Log-Funktionsufrufe reinmacht (nur für's Compilieren),
bzw. man läßt den Parser so drüberlaufen und läßt sich direkt in seine Quellcodes die Aufrufe reinbauen.
Oder man geht selber durch und macht die manuell rein.

himitsu 24. Feb 2012 11:23

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Ein einfacher Weg wäre, wenn es ein Event gäbe, welches schon eingebaut ist (zu Beginn und am ende jeder Prozedur), aber sowas gibt es in Delphi nicht.

Bei Scriptsprachen, wie JavaScript und auch teilweise bei gemanagten Sprachen (vielleicht .NET) sähe die Sache anders aus. Also vorwiegend dort, wo ein Programm den Code interpretiert und wo man sich in den Interpretierer reinhängen kann.

Du willst ja überall einen Funktionsaufruf reinhaben und der muß ja auch erstmal überall rein.
Wäre halt zu schön, wenn man ganz einfach im Delphi einen Precompiler registrieren könnte. (den vermisse ich ganz doll)

In neueren Delphis gäbe es die PreCompile- und AfterCompile-Events, wo man sowas gewisser Maßen unterbringen könnte. (auch wenn kein echter PreCompiler möglich wäre, welcher die QuellCodes unverändert läßt)

neo4a 24. Feb 2012 11:31

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Zitat:

Zitat von himitsu (Beitrag 1152667)
Zitat:

Zitat von gibb (Beitrag 1152662)
daher müsste das irgendwie automatisch gehen. oder halt wie bereits gesagt eine stelle ganz weit hinten versteckt.

Mehrere Die Wege hatte ich doch schonmal aufgezählt?

Ich würde einmal vermuten, er möchte eine Lösung z.B. basierend auf TVirtualMethodInterceptor - er weiß es nur nicht.

Wie auch immer: Ohne Konfigurationsaufwand (sei es per Attribute, xml-File oder hardcodierte Funktionsaufrufe) wird es wohl nicht, zumindest aber nicht vernünftig gehen.

Stevie 24. Feb 2012 11:59

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Zitat:

Zitat von neo4a (Beitrag 1152671)
Zitat:

Zitat von himitsu (Beitrag 1152667)
Zitat:

Zitat von gibb (Beitrag 1152662)
daher müsste das irgendwie automatisch gehen. oder halt wie bereits gesagt eine stelle ganz weit hinten versteckt.

Mehrere Die Wege hatte ich doch schonmal aufgezählt?

Ich würde einmal vermuten, er möchte eine Lösung z.B. basierend auf TVirtualMethodInterceptor - er weiß es nur nicht.

Zum Profilen würd ich diesen Weg aber nicht gerade empfehlen, der ganze RTTI und Invoke Overhead ist ein Performance Albtraum (ich gehe jetzt mal davon aus, dass der TE hier performancekritische Stellen untersuchen möchte).

Ich konnte bisher nicht herauslesen, ob das Tracen Teil der Entwicklung ist, oder ob das auch irgendwie beim Kunden aktivierbar sein muss. Speziell für Debugging/Profiling Zwecke ist auch der Sampling Profiler sehr nützlich.

Daniel 24. Feb 2012 12:20

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Zitat:

Zitat von neo4a (Beitrag 1152671)
Ich würde einmal vermuten, er möchte eine Lösung z.B. basierend auf TVirtualMethodInterceptor - er weiß es nur nicht.

Ich wage es, dies in Zweifel zu ziehen. An den TVirtualMethodInterceptor hatte ich zwar auch geacht, dieser ist jedoch Teil der neuen RTTI und damit nicht in Delphi 2006 verfügbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 Uhr.
Seite 3 von 7     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz