Pregunta

Algo extraño está sucediendo en mi código donde estoy usando un StackTrace. Es casi como si la información de depuración no se estuviera cargando ... pero la estoy ejecutando en la compilación DEBUG. Los archivos .pdb están definidos en el directorio bin y están actualizados. En serio, se me acabaron las ideeas:

public class TraceHelper
{
    private static IDictionary<string,int> TraceDictionary = new Dictionary<string,int>();

    public TraceHelper(int duration)
    {

         ...
        TraceDictionary[InternalGetCallingLocation()]+=duration;
         ... 

    }
    public static string InternalGetCallingLocation ()
    {
          var trace = new System.Diagnostics.StackTrace();
          var frames = trace.GetFrames();
          var filename = frames[1].GetFileName(); //<<-- this always returns null
          return frames[0].ToString(); //this returns:
          //  "InternalGetCallingLocation at offset 99 in file:line:column <filename unknown>:0:0"
    }
}
¿Fue útil?

Solución

Se encontró un poco más de búsqueda en Google esta publicación

Resulta que StackTrace tiene un constructor especial

public StackTrace(bool fNeedFileInfo) 

si necesita que se complete la información del archivo. Ouch

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top