La stampa della traccia dello stack non è così difficile quando si utilizza System.Diagnostics
. Mi chiedo se è possibile stampare i VALORI dei parametri passati a ciascun metodo sulla traccia dello stack, e se no perché no.Stampa i valori dei parametri sulla traccia dello stack
Ecco il mio codice preliminare:
public static class CallStackTracker
{
public static void Print()
{
var st = new StackTrace();
for (int i = 0; i < st.FrameCount; i++)
{
var frame = st.GetFrame(i);
var mb = frame.GetMethod();
var parameters = mb.GetParameters();
foreach (var p in parameters)
{
// Stuff probably goes here, but is there another way?
}
}
}
}
Grazie in anticipo.
Non funzionerà: 'MethodInfo.GetParameters' restituisce i parametri dichiarati, non i valori degli argomenti ... –
@ThomasLevesque: Ok, quindi questa particolare appraoch potrebbe non funzionare. C'è un altro che lo farà? – user420667
Solo un debugger ha un colpo alle informazioni necessarie, disponibili dal file .pdb. Tuttavia, da quel momento, il programma non può eseguire il debug di se stesso e le informazioni sono accurate solo per la build di Debug. L'ottimizzazione delle chiamate di metodo è un obiettivo di ottimizzazione del jitter molto importante. Non puoi far funzionare questo. –