下面是我用来记录错误详细信息的代码。
StackTrace sTrace = new StackTrace(true);
string functionname = Environment.NewLine + " MethodName - " + sTrace.GetFrame(1).GetMethod().Name;
string classname = Environment.NewLine + " File Path - " + sTrace.GetFrame(1).GetFileName() + Environment.NewLine + " Line No. - " + sTrace.GetFrame(1).GetFileLineNumber() + Environment.NewLine + " ClassName - " + sTrace.GetFrame(1).GetMethod().ReflectedType.Name + Environment.NewLine + " DateTime - " + DateTime.Now.ToString();
WriteLine(string.Concat("ERROR: ", errMsg, classname, functionname,
Environment.NewLine));
这在 Debug模式下工作完美,但在 Release模式下,我得到的函数名称和类名称为空白,行号 (sTrace.GetFrame(1).GetFileLineNumber()) 为 0。
是否有任何其他最佳方法可以从错误源处获取函数名、类名和行号。
提前致谢。
最佳答案
StackTrace调试构建配置的信息将是最有用的。默认情况下,Debug 版本包含调试符号,而 Release 版本不包含。调试符号包含构造 StackFrame 和 StackTrace 对象时使用的大部分文件、方法名称、行号和列信息。
其实Release模式优化代码并没有Program DataBase file(.pdb)
处于 Release模式
属性 -> 构建 -> 定义调试常量(勾选)
属性 -> 构建 -> 优化代码(取消勾选)
关于c# - StackTrace 类方法在 Release模式下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26292033/