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