vs2008我可以获得行号@ *的值吗?

时间:2010-07-20 19:40:32

标签: visual-studio-2008

情景:

我最近了解了Mark Russinovich有用的DebugView *实用程序 使用DebugView,即使关闭vs2008,我也可以使用这样的语句:

System.Diagnostics.Debug.WriteLine("some text =. " + some_variable);  

我想在编译时修改上面的内容,以包含源代码行号:

System.Diagnostics.Debug.WriteLine("nnnn: some text =. " + some_variable);  

其中nnnn表示源代码行号。

AFAIK,要做到这一点,vs2008需要某种形式的元变量,如@linenumber,用于当前编译时源代码行号。即,如果Debug.Writeline声明
在第十行,然后这样的元变量== 10.

因此,上面的粗略示例等调试语句可以在多个地方使用,并且很容易识别每个调试语句的源代码位置。

问题 是否有可在编译时引用的元变量

P.S。:我无法通过Google和SO搜索功能找到这个问题的答案。

2 个答案:

答案 0 :(得分:1)

这是我所知道的最好的方式来正确地获取ACTUAL线(即它是正确的线,因为它是在线的)

Debug.WriteLine(" hi there I am line number [" + (new StackTrace(new StackFrame(true)).GetFrame(0).GetFileLineNumber().ToString()) + "]");

答案 1 :(得分:0)

尽管我希望有一种方法可以更快地获取此信息,但您可以使用System.Diagnostics命名空间中的StackTrace类获取文件名和行号:

StackTrace st = new StackTrace(new StackFrame(true));
string fileName = st.GetFrame(0).GetFileName();
string lineNumber = st.GetFrame(0).GetFileLineNumber().ToString();
string fileNameAndLineNbr = fileName + ":" + lineNumber;

System.Diagnostics.Debug.WriteLine(fileNameAndLineNbr + ": some text =. " + some_variable);
相关问题