"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

C# Reflection API .. Methodenaufrufe protokollieren...

Geigerzeiger 04.04.2007 - 16:35 2496 8
Posts

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
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

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
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

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Und wie sollte man deiner meining nach den Callstack auslesen, so ohne Debugger?

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
:bash: naja, soviel zeit haben wir dann auch wieder net !

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

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Was war eigentlich das Problem, und welche Lösung hast du jetzt dafür?

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
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

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
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

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Muss angepasst werden, ja.

Aber ist nur eine Zeile / Assembly , also keine Hexerei
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz