2010-04-23 27 views
7

Yığın izim hakkında ayrıntılı bir günlük almak istiyorum. Bir StackFrame ve sonra bir yöntem alabilir ve sonra bu yöntemin tüm parametrelerini alabilirim.Yöntem yerel değişkenleri C# yığın izleme ile alabilir miyim?

  StackTrace st = new StackTrace(); 
      StackFrame[] sfs = st.GetFrames(); 
      foreach (StackFrame sf in sfs) 
      { 
       MethodBase method = sf.GetMethod(); 
       ParameterInfo[] pis = method.GetParameters(); 
       foreach (ParameterInfo pi in pis) 
       { 
         .... 
       } 
       Console.WriteLine(method.Name); 
      } 

Ama nasıl bir yöntem dahilinde yerel değişkenler infomation alabilir: Yalnızca takip kodu olarak?

Birisi bana ışık tutabilir mi?

Çok teşekkürler.

cevap

3

LocalVariableInfo ürününe bakmak isteyebilirsiniz.

Örnek fom MSDN // Yöntem gövdesi bilgilerini edinin.

MethodInfo mi = typeof(Example).GetMethod("MethodBodyExample"); 
MethodBody mb = mi.GetMethodBody(); 
Console.WriteLine("\r\nMethod: {0}", mi); 

// Display the general information included in the 
// MethodBody object. 
Console.WriteLine(" Local variables are initialized: {0}", 
    mb.InitLocals); 

foreach (LocalVariableInfo lvi in mb.LocalVariables) 
{ 
    Console.WriteLine("Local variable: {0}", lvi); 
} 
+0

Teşekkürler Filip. Sadece bir başka soru, yerel değişkenlerin ismini/tipini/değerini alabilir miyim? – smwikipedia

+1

@smwikipedia: hayır, yapamazsınız :) en azından yönetilen kodda değil. Yönetilmeyen profil oluşturma API'larını kullanacak olursanız işe yarayabilir, ancak bu kolay bir iş değildir. –

+1

Bu kapsamı denetlediğiniz için yerel değişkenin değerini elde etmek bir anlam ifade etmez. –

İlgili konular