Delphi-PRAXiS
Seite 6 von 7   « Erste     456 7      

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)

himitsu 28. Feb 2012 12:19

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

Zitat von omata (Beitrag 1153369)
Was spricht dagegen ein Tool zu schreiben, das das für einen übernimmt?

Edit: Oh, ich sehe gerade, dass es doch nicht so gut funktioniert. Sorry für den Müll.

Wobei das schon möglich ist, also ein toll, welche diese zeilen in den Quellcode einbaut, wenn man sie haben will und rausbaut, wenn nicht.

Ein echter Precompiler hääte nur den Vorteil, daß er diese Änderung virtuell/temporär/unsichtbar nur wärend des Compilierens machen könnte.

omata 28. Feb 2012 12:22

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Ja natürlich. Mir ging es auch nur darum, dass Problem zu lösen. Leider gibt es eben scheinbar keine schöne Lösung, dann würde ich die auch bevorzugen.

Stevie 28. Feb 2012 12:38

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
AOP in Delphi (Profiling wäre eine der Anwendungsgebiete) beschäftigt mich schon eine Weile und das lässt sich aktuell nur behelfsmäßig über virtual method interception lösen. Alternative wäre eine Art Preprozessor zu bauen oder die Binary nachträglich zu modifizieren.

Aber an dieser Stelle nochmal die Frage: ist es notwendig Bottlenecks in der Anwendung zur Entwicklungszeit zu finden oder Echtzeitdaten beim Kunden in Produktiveinsatz?

schlecki 29. Feb 2012 08:40

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
noch ein ganz pragmatischer Ansatz wäre GpProfile (http://17slon.com/gp/gpprofile/). Da gibt es iirc ein kleines Tool, welches alle Methoden in scannt und instrumentiert - oder auch wieder den original-Zustand herstellt.

Delphi-Quellcode:
procedure Foo
begin
...
end
wird glaube ich zu


Delphi-Quellcode:
procedure Foo
begin
{$ifdef gpprofile}gpStart; try {$endif}
...
{$ifdef gpprofile}finally gpEnd; end; {$endif}
end
wir hatten das ne zeitlang genutzt, haben dann aber die Funktionen gpStart und gpEnd entsprechend angepasst.

Stevie 29. Feb 2012 09:10

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

Zitat von schlecki (Beitrag 1153601)
noch ein ganz pragmatischer Ansatz wäre GpProfile (http://17slon.com/gp/gpprofile/).

Dann solltest du aber auch auf die aktuelle Version verlinken. ;)

gibb 29. Feb 2012 11:14

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Hallo, es geht darum in echtzeit beim Kunden auf seinem System das Festzustellen und nicht in der Entwicklungsphase. Weil der Kunde Entwickelt auch nur hat der kein Tool zur hand & wir auch erst seit kurzem so halb mit welchem er seine Performance probleme Analysieren kann. Unter umständen bedürfen seine Probleme anpassungen im Delphi sourcecode um das zu lösen. Schön wäre halt in dem Moment wenn man da schon einigermassen eingrenzen kann wo das ist und nicht zuerst die Kundendatenbank bei uns nachbauen muss um dann mit einem profiler drüber zu gehen (der unter umständen sowieso nicht funktioniert warum auch immer.)

Also ich fasse zusammen um auch sicher zu sein das ich alles richtig verstanden habe:
- Omata hat nach einem Search Patern gesucht welches Methodenanfänge erkennt um dann dort eine Zeile einzufügen. Und war leider nicht erfolgreich (wäre mein bevorzugter ansatz gewesen. Wenn ich auch nur eine kleine ahnung gehabt hätte wie ich zuverlässig Methodenanfänge erkennen könnte)
-Ich verwende einen Parser um damit einen Methodenanfang zu finden und dort meinen Inhalt einzufügen? Ich habe die pas mal überflogen und auf die schnelle nicht verstanden wie das genau zu verwenden ist.


Gruss Gibb

schlecki 29. Feb 2012 11:37

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
@Stevie: der link ist auf der von mir verlinkten Seite auch vorhanden :)

@gibb
Nein, ich habe eigentlich nur die Methode gezeigt, wie man mit möglichst wenig Aufwand ein Log einbauen kann. Die Aufrufe müssten schon von Hand geschrieben werden. Alternativ könnte man da mit gpProfile was basteln. Da ist zumindest der Parser dabei - ist ja OpenSource.

gibb 29. Feb 2012 12:09

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
tschuldige, ich bin mit den Namen durcheinander gekommen, das war omata...:roll:

gibb 29. Feb 2012 14:57

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
mhmm, ich habe mir gpProfile etwas angeschaut, zumindest die exe. Und die scheint genau das zu machen was ich eigentlich haben möchte zumindest fast ;)

Entweder such ich mir jetzt den Teil aus dem Code raus der das ganze parst oder aber ich kann direkt die exe so konfigurieren das ich es so verwenden kann...

1. wie passe ich den searchpath an für GP Profile? Wenn ich die .dpr öffne findet er nicht alle files weil nicht alle im searchpath von GPProfile sind.
2. Kann ich dem beibringen auch methoden aufzurufen und units zu includen die in meiner Applikation vorhanden sind? Wenn ja wie? resp. wo.

Also ich möchte sozusagen das RAII patern mit der erweiterung für den Methodenname einbinden und halt meine Log funktion aufrufen und nicht die des GpProfile. Damit könnte ich dann einen Kompletten Callstack aus delphi & Scripting herstellen ebenso Zeitmessungen währen möglich und viele andere lustige sachen :D

gibb 29. Feb 2012 16:09

AW: Start und Stop jeder Methode Tracen an nur einer stelle Implementieren
 
Hab auch den Source unterdessen gezogen, habs noch nicht kompiliert gekriegt. Auh habe ich noch nicht die Funktion gefunden die die anderen Registriert... leider dachte ich könnte da ev abschauen 8-) wenn jemand also mehr dazu weiss oder weiss wie ich am besten ein Tool schreibe das mir das oben beschriebene ermöglicht... nur immer her damit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
Seite 6 von 7   « Erste     456 7      

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