【发布时间】:2018-05-18 17:08:02
【问题描述】:
我试图了解如何打印程序的执行流程。 我写了一些简单的代码来证明我的困境。
我希望它打印如下内容: 在 A 类,主要。 在 B 类中,方法 B。 在 C 类中,方法 C。
StackTrace 似乎给了我很多难以阅读的信息。有没有更简单的方法,或者更容易阅读 StackTrace 的方法?实际代码要大得多,我不想在每个方法中都添加打印语句,所以我认为这样的事情可能会使调试更容易。另外,我不能在实际代码中使用 Visual Studio 的调试器。因此,如果你们可以建议我使用哪个函数,如果不是 StackTrace,它将为我打印必要的信息,我将不胜感激。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StackTrace
{
public class A
{
public static void Main(string[] args)
{
B newB = new B();
newB.methodB();
Console.WriteLine("StackTrace: {0}", Environment.StackTrace); //I'd like to get the entire execution flow printed here
Console.ReadKey(); //just for testing, don't worry about this.
}
}
public class B
{
public void methodB()
{
C newC = new C();
//Console.WriteLine("In class B, method B");
newC.methodC();
}
}
public class C
{
public void methodC()
{
//Console.WriteLine("In class C, method C");
}
}
}
【问题讨论】:
-
您在使用 Visual Studio 吗?如果是这样,请在 main() 的第一行按 f9,然后单击 f10 单步执行代码。
-
是的,我正在使用 Visual Studio。只是想澄清一下:我不能在实际代码中使用调试器。
-
@tim 够公平的。您可以使用 PostSharp 执行此操作,但免费版本有限。
-
老实说,您最好的选择是学习如何阅读 StackTrace,因为您似乎正在寻找的所有信息都在其中。它只是格式很差。
-
你可以考虑使用 Postsharp 之类的东西。添加一个横切关注点来记录正在执行的方法,并让 Postsharp 将该记录代码注入到每个方法中。