C# Reflection API .. Methodenaufrufe protokollieren...

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_reflection_api_methodenaufrufe_protokollieren_178668/page_1 - zur Vollversion wechseln!


Geigerzeiger schrieb am 04.04.2007 um 16:35

Hallo!

Habe folgendes Problem: Ich will mittels der Reflection API aus .NET alle Methoden ausgeben lassen, die gerade com System ausgeführt werden.

Assemblies, Klassen und Methodennamen herauslesen ist soweit kein problem. Auch das Starten von speziellen Methoden (Invoke) ist kein Hindernis. Ich will aber dass ich ein beliebiges Assembly angeben kann, wo mitprotokolliert wird, welche Methode gerade ausgeführt wird ohne das Assembly (Source der Methoden) zu verändern.

Das soll folgerndermaßen aussehen:

ich starte zb.
getrunningmethods.exe --assembly:myasm.dll

er soll mir dann dies ausgeben wenn method1 und method2 gerade in diesem assembly ausgeführt werden.
method1() running...
method2() running...
...

Ich hoffe, ihr könnt mir da irggendwie weiterhelfen..

PS; Aspektorientierte Frameworks für C# habe ich schon einige durchprobiert, erfüllen aber nicht das was ich will..

LG


that schrieb am 04.04.2007 um 20:59

Dazu wirst du wohl einen Debugger und die passenden Symbols brauchen.

Deine gewünschte Liste wäre auch eher eine Liste von Callstacks (einer pro Thread).


Geigerzeiger schrieb am 04.04.2007 um 21:17

Und wie sollte man deiner meining nach den Callstack auslesen, so ohne Debugger?


that schrieb am 04.04.2007 um 21:19

Schreib halt einen...

http://www.microsoft.com/downloads/...;displaylang=en


Geigerzeiger schrieb am 05.04.2007 um 15:34

:bash: naja, soviel zeit haben wir dann auch wieder net !

Ich habe jetzt eine andere Lösung erarbeitet, hat sich somit erledigt.


that schrieb am 05.04.2007 um 20:40

Was war eigentlich das Problem, und welche Lösung hast du jetzt dafür?


Geigerzeiger schrieb am 05.04.2007 um 23:10

Ich habe jetzt Factoryklassen angelegt, die von jedem assembly aus aufgerufen werden um ein volldynamisches logging zu ermöglichen.

Die einzelnen Parameter werden über XML gespeichert.

D.h. Jedes Assembly fordert von einem Server ein Logging Objekt an, das dann für jede Methode den Aufruf protokolliert.


gue schrieb am 06.04.2007 um 08:35

Muss das Assembly also angepasst werden oder machst du das irgendwie über Reflection/Emit?
Ansonsten kannst du für so was auch die System.Diagnostics Tracing Sachen verwenden.
Wär aber interessant, wie das automatisch für beliebige Assemblies funktioniert - hab da auf die schnelle nichts gefunden.


Geigerzeiger schrieb am 06.04.2007 um 12:02

Muss angepasst werden, ja.

Aber ist nur eine Zeile / Assembly , also keine Hexerei




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025