浅谈StackTrace

  • StackTrace的使用
    • 介绍
    • 代码示例
    • 结果打印
    • 源码链接

StackTrace的使用

使用StackTrace类来获取调用方法的堆栈信息。

介绍

1.其中调用GetFrame得到栈空间,参数index 表示栈空间的级别,0表示当前栈空间,1表示上一级的栈空间,依次类推。

2.除了可以获取方法信息外,还可以调用StackFrame类的成员函数,在运行时得到代码的文件信息及行号和列号等

3.利用StackTrace 属性获得错误的函数被调用的堆栈信息,以及文件的位置(文件名,行号),并将错误信息保存在一个.config的文件里

4.如果是try{}catch(Exception ex){},是可以通过ex.StackTrace()直接获取到堆栈信息,但如果是其他场景,就需要通过下面的代码来获取了。

代码示例

public static StringBuilder OutputCallStack()
{StringBuilder stackStrs = new StringBuilder();//如果为 true,则捕获文件名、行号和列号;否则为 false。System.Diagnostics.StackTrace stack = new System.Diagnostics.StackTrace(true);//调用GetFrame得到栈空间System.Diagnostics.StackFrame[] stackFrames = stack.GetFrames();//从1开始是为了不显示当前函数的堆栈,从目标函数开始for (int i = 1; i < stackFrames.Length; i++){//参数index 表示栈空间的级别,0表示当前栈空间,1表示上一级的栈空间,依次类推System.Reflection.MethodBase? method = stackFrames[i].GetMethod();//堆栈信息  类名.方法名; 文件名.行数stackStrs.AppendLine($"[CALL STACK][{i}]: 【Method:{method?.DeclaringType?.FullName}.{method?.Name}】; 【File:{stackFrames[i].GetFileName()}.{stackFrames[i].GetFileLineNumber()}】");}return stackStrs;
}

结果打印

源码链接

https://download.csdn.net/download/Aflashstar/57777687

【C#学习笔记】【StackTrace】相关推荐

  1. Spring Boot 2 学习笔记(2 / 2)

    Spring Boot 2 学习笔记(1 / 2) - - - 45.web实验-抽取公共页面 46.web实验-遍历数据与页面bug修改 47.视图解析-[源码分析]-视图解析器与视图 48.拦截器 ...

  2. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

    [转] C#学习笔记14--Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空 ...

  3. 安卓逆向学习笔记(一)

    这些都是通过学长给予,以及网络上的资源来做的个人理解.总结,大牛们不要喷. 零基础小萌新在角落瑟瑟发抖的认真记笔记. 安卓逆向学习笔记(一) 写一个安卓程序(附上原帖链接教我兄弟学Android逆向0 ...

  4. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  5. 学习笔记 - 5步理解Gradle. How build execution is controlled by gradle tasks?

    https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:projects_and_tasks https://d ...

  6. Dart 学习笔记一(操作符、方法与异常)

    目录 Dart变量 final和const修饰符 Dart的内置类型 numbers Strings Booleans Lists(列表) Maps(映射集合) Runes(用于在字符串中表示Unic ...

  7. Javaweb学习笔记(JSP标准标签库)

    Javaweb学习笔记(JSP标准标签库) JSTL入门 安装和测试JSTL JSTL中的Core标签库 < c:out>标签 标签 标签 < c:catch>标签 标签 标签 ...

  8. Dart 语言学习笔记(Dart语言完全指南)

    Dart 语言学习笔记 Part 1:概览 Dart是一门纯OOP语言.所有的类都继承于Object类.null也是对象,变量仅仅存储对象的引用 Dart是强类型语言,即使Dart可以进行类型推断(使 ...

  9. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  10. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

最新文章

  1. 微信小程序开发流程介绍
  2. GDLiveStreaming视频推送RTMP
  3. React Fiber 原理介绍
  4. ERROR 1366 (HY000): Incorrect string value......(Mysql报错解决)
  5. python-global全局变量
  6. 误码率越高越好还是越低越好_夜间护理步骤越多越好还是越少越好?NFF
  7. 摩托罗拉v8对讲机驱动软件_摩托罗拉数字机如何设置“个性”提示音
  8. 算法导论水壶问题(第三版第八章思考题8-4)
  9. HashMap底层理解(上)
  10. 隐藏右侧“快速启动栏”中的回收站图标及查看所有网站内容
  11. 拓端tecdat|R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
  12. 队列服务(Queue)
  13. ArcGIS中地理配准与空间校正的不同
  14. 博弈论——完全信息博弈
  15. 计算机概论二进制加法,计算机科学概论二进制
  16. 解决命令提示符已被系统管理员停用的问题
  17. LeetCode | 面试题04. 二维数组中的查找【剑指Offer】【Python】
  18. Android WebView点击返回键回到上一个html
  19. scp 传目录_scp传输文件的命令
  20. 海贼C语言,C语言程序设计(海贼现场课)

热门文章

  1. Python—一行多语句和一句多行
  2. 冒险岛2官网模拟具体教程之二头部的布局以及动态交互实现(详解)(连载)
  3. 最新发现:《羊了个羊》通关靠运气,项目通关靠双商
  4. 微信小程序如何本地调试
  5. 登记在未成年子女名下的房产离婚时如何处理?
  6. SQL新手必看!详细的「取数拆解」和「提速方案」来了!
  7. 北京社保服务平台Android版(CSDN技术专区)
  8. 使用JS校验身份证号
  9. 智慧安防系统(嵌入式开发)
  10. 成都学院计算机专业,电子科技大学成都学院计算机应用技术(专科)专业介绍