to jackydr(dragon) 不是那个意思,是用某种方法取到行号,最终是要写在日志里的。 如果直接把行号写死,太不灵活了。
public class LogInfo { public static int GetLineNum() { System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(1, true); return st.GetFrame(0).GetFileLineNumber(); } }然后在代码中调用LogInfo.GetLineNum()即可获取行号,但代码中必须包含调试信息,在Release下只会返回0
不是那个意思,是用某种方法取到行号,最终是要写在日志里的。
如果直接把行号写死,太不灵活了。
public static int GetLineNum()
{
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(1, true);
return st.GetFrame(0).GetFileLineNumber();
}
}然后在代码中调用LogInfo.GetLineNum()即可获取行号,但代码中必须包含调试信息,在Release下只会返回0
try
{
...
}catch(Exception ex)
{
ex.toString();
}
使用起来也非常简单。
在程序启动时:
Trace.Listeners.Remove("Default");
Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener("debug.log"));
而后在每个异常的地方:
Trace.WriteLine(ex.StackTrace);//这里就代行号了。
当然如果随时随地都要的话,则使用
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpref/html/frlrfsystemdiagnosticsstackframeclasstopic.htm
而Release的时候,也需要行号,
不仅是出现异常时需要行号,没有出现异常时也需要行号。