有没有办法在c#-project的debug-output中打印所有调用Debug.Write()的callsite(source-file和linenumber)?
背景
我是一个非常古老的项目的新手,所以我开始在调试模式下运行应用程序。在应用程序的某些点上,我感兴趣的是,调试输出正在编写一些无意义的行,如:
object
object
object
我认为如果我可以配置Debug-class或者给它一些回调以获取堆栈并在调试输出前面打印调用站点,这样会很好:
SomeClass.cs[45]: object
SomeClass.cs[45]: object
SomeClass.cs[45]: object
答案 0 :(得分:0)
基于Jon Skeets suggestion我在root-namespace中实现了一个Degub类,如下所示:
public static class Debug
{
public static void WriteLine(string str)
{
var sf = new StackFrame(1,true);
System.Diagnostics.Debug.WriteLine("{0}({1}): {2}",
Path.GetFileName(sf.GetFileName()),
sf.GetFileLineNumber(),
str
);
}
}
似乎编译器更喜欢使用using子句中定义的那个。但要小心:
Listeners
和Write()
和WriteLine()
的重载) - 否则构建失败总而言之:我很满意这个解决方案 - 谢谢!