StackTrace类方法在发布模式下不工作.下面的

本文关键字:工作 模式 类方法 布模式 StackTrace | 更新日期: 2023-09-27 18:26:04

是我用来记录错误详细信息的一段代码。

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。

有没有其他最好的方法可以从错误产生的地方获得函数名、类名和行号。

提前谢谢。

StackTrace类方法在发布模式下不工作.下面的

StackTrace信息将是调试构建配置中信息最多的。默认情况下,调试生成包含调试符号,而发布生成不包含。调试符号包含构造StackFrame和StackTrace对象时使用的大部分文件、方法名、行号和列信息。

实际上,发布模式优化代码,并且没有程序数据库文件(.pdb)

在释放模式

属性->构建->定义调试常量(检查它)

属性->构建->优化代码(取消检查)

这是屏幕截图-https://i.stack.imgur.com/ryREI.jpg

属性-->生成-->发布配置-->高级->调试信息(FULL)。

如果在应用程序中使用.pdb文件,则可以获得它。请检查此

您可以启用它:Properties > Linker > Debugging > Generate Debug Info = "Yes"

关于pdb文件的一个注记