有没有办法在一个程序集中记录所有方法?

Is there any way to log all the methods in one assembly?

我想知道是否可以在每次调用方法或 setter 时添加一个 Console.WriteLine。

例如:

public void Test() => _do.Something();

每当调用该方法时添加一个

Console.WriteLine("Method [name] was called");

最后,可能还有调用该方法的程序集的名称。

每个方法都有一个文件,所以我不必手动添加。

这个想法的问题在于它可能会带来令人难以置信的性能损失。在许多情况下,日志记录可能比该方法的实际工作花费更长的时间。

然而这是可能的。一些分析工具具有与此类似的模式。来自 Dot trace 跟踪模式。

Unlike sampling, tracing revolves around a function, or more precisely, around function entry and exit. dotTrace receives notifications from CLR when a function is entered and then when it is left, even if it is left because of an exception. The time between these two notifications is considered as the execution time of the function.

但这使用了高度优化的日志记录形式,但即便如此,性能损失也很大。所以这通常只有在存在需要调查的性能问题并且其他分析模式不足时才会这样做。

如果您想调试问题而不是性能,您应该熟悉 debugger。调试工具是发现问题的主要途径,比新手程序员常用的“printf调试”灵活多了,也好用多了。

插入检查以验证有关软件的假设也很常见。作为 Debug.Assert 仅 运行 在调试模式下检查,或者记录 and/or 如果违反假设则抛出异常。