C# 調用堆棧獲取及打印


 1             System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
 2             System.Diagnostics.StackFrame[] sfs = st.GetFrames();
 3             //過慮的方法名稱,以下方法將不會出現在返回的方法調用列表中
 4             string _filterdName = "ResponseWrite,ResponseWriteError,";
 5             string _fullName = string.Empty, _methodName = string.Empty;
 6             for (int i = 1; i < sfs.Length; ++i)
 7             {
 8                 //非用戶代碼,系統方法及后面的都是系統調用,不獲取用戶代碼調用結束
 9                 if (System.Diagnostics.StackFrame.OFFSET_UNKNOWN == sfs[i].GetILOffset()) break;
10                 _methodName = sfs[i].GetMethod().Name;//方法名稱
11                                                       //sfs[i].GetFileLineNumber();//沒有PDB文件的情況下將始終返回0
12                 if (_filterdName.Contains(_methodName)) continue;
13                 _fullName = _methodName + "()->" + _fullName;
14             }
15             st = null;
16             sfs = null;
17             _filterdName = _methodName = null;
18             LogHelper.Logger.Debug("合約乘數為零-調用堆棧打印" + _fullName.TrimEnd('-', '>'));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM