C#trace(log)两点之间的所有代码行

时间:2015-06-08 16:17:36

标签: c# visual-studio visual-studio-debugging

在我的应用程序的VS 2013(C#)跟踪(到文件)执行路径中是否可以?我的意思是逐行,就像我在断点之后一直按F11一样,手动写下行...结果日志可能很大,我知道,但是呢?

当然我需要源代码行,而不是MSIL。

1 个答案:

答案 0 :(得分:0)

是的,这是可能的,但如果你这需要访问源文件 真的需要源代码。

使用CallerInformationAttributes

C#4.5必需:

int _beginIndex;

public void BeginTrace(
    [CallerFilePath] string sourceFilePath = "",
    [CallerLineNumber] int sourceLineNumber = 0)
{ 
    _beginIndex = sourceLineNumber;
}

public void EndTrace(
    [CallerFilePath] string sourceFilePath = "",
    [CallerLineNumber] int sourceLineNumber = 0)
{
    int index = 0;
    foreach(var line in File.ReadLines(sourceFilePath))
    {
       if(index++ > _beginIndex && index <sourceLineNumber)
           Console.WriteLine(line);
    }
}

然后像这样使用它:

  BeginTrace();

  Foo foo = new Foo();
  foo.DoSomeStuff();
  foo.Bar();

  EndTrace();

这个例子只适用于同一个文件中的Begin和End,但是除非你传递一些对象,否则将很难完成其他的...