您的位置:首页 > 其它

获取当前程序运行的堆栈的副本集合

2015-01-16 12:09 190 查看
从DNN中拔出的,效果不赖。。。获取程序运行时候异常的调用堆栈位置

/// <summary>
/// 获取调用的堆栈信息 获取当前程序运行的堆栈的副本集合
/// </summary>
private static StackFrame CallingFrame
{
get
{
StackFrame frame = null;
///返回当前堆栈跟踪中所有堆栈帧的副本。
var stack = new StackTrace().GetFrames();

int frameDepth = 0;
if (stack != null)
{
///穷历  直到找到要调用日志或者异常的时候 的前一个方法    就查询到了 出错的执行方法的位置
var reflectedType = stack[frameDepth].GetMethod().ReflectedType;
while (reflectedType == BuildManager.GetType("DotNetNuke.Services.Exceptions.Exceptions", false)
|| reflectedType == typeof(DnnLogger)
|| reflectedType == typeof(DnnLog))
{
//排除这些类 找到指定的调用的类 Type
frameDepth++;
reflectedType = stack[frameDepth].GetMethod().ReflectedType;
}
frame = stack[frameDepth];
}
return frame;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: