下面是我用于记录错误详细信息的代码。
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));
这在调试模式下工作得很好,但在相关模式下,我将函数名和类名称视为空白,行号(sTrace.GetFrame(1).GetFileLineNumber())为0。
是否有其他最佳方法可以获取发生错误的函数名,类名和行号。
提前感谢。
答案 0 :(得分:1)
StackTrace信息将提供最多信息。默认情况下,Debug构建包括调试符号,而Release构建则不包括。调试符号包含构造StackFrame和StackTrace对象时使用的大部分文件,方法名称,行号和列信息。
实际上,发布模式可以优化代码并且没有Program DataBase file(.pdb)
在发布模式
属性 - >构建 - >定义调试常量(检查)
属性 - >构建 - >优化代码(取消检查)
答案 1 :(得分:1)
如果您在应用程序中使用.pdb
文件,则可以获取它。请检查this
您可以启用它:Properties > Linker > Debugging > Generate Debug Info = "Yes"
答案 2 :(得分:1)
以下是屏幕截图 - http://imgur.com/Oet3SED
属性 - >构建 - >释放conf - > Adv->调试infor(FULL)。