下面是我的一段代碼,我用它來記錄我的錯誤細節。StackTrace類的方法不工作在發佈模式
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));
這部作品在調試模式完美,但在relese模式下,我得到函數名和類名的空白,行號(sTrace.GetFrame(1).GetFileLineNumber())爲0。
是否有任何其他最好的方法來獲取錯誤發生地點的函數名稱,類名稱和行號。
在此先感謝。
看看'StackFrame'的文檔。在那裏你可以看到大多數調試信息僅在使用調試配置構建的程序集中創建。 – Fratyx 2014-10-10 04:44:43
嘗試在Release上突出顯示,並在即時窗口中查看問題。 – DevEstacion 2014-10-10 04:56:42
[在發佈模式下顯示.NET程序集的堆棧跟蹤中的行號]的可能重複(http://stackoverflow.com/questions/628565/display-lines-number-in-stack-trace-for-net-assembly-在釋放模式) – CarbineCoder 2014-10-10 05:08:07