C#获取堆栈信息,输出文件名、行号、函数名、列号等
命名空间:System.Diagnostics
得到相关信息:
StackTrace st = new StackTrace(new StackFrame(true));
StackFrame sf = st.GetFrame(0);
Console.WriteLine(" File: {0}", sf.GetFileName()); //文件名
Console.WriteLine(" Method: {0}", sf.GetMethod().Name); //函数名
Console.WriteLine(" Line Number: {0}", sf.GetFileLineNumber()); //文件行号
Console.WriteLine(" Column Number: {0}", sf.GetFileColumnNumber());
写日志,便于调试,查找问题
StackTrace st = new StackTrace(new StackFrame(true));只能获取本次的堆栈信息,可以改用下面的方法获取程序的调用堆栈信息。
StackTrace st = new StackTrace(true); 就可以获取程序的整个堆栈调用关系的列表信息。
使用st.ToString()可以直接获取堆栈列表,是不是很方便啊。
参考:http://blog.csdn.net/zhuxiaowei716/article/details/46337033
================================================================================================
/******************************************************************* 创建人:HTL* 创建时间:2015-06-03 19:54:49* 说明: 获取出错时的堆栈调用方法列表* Huangyuan413026@163.com*******************************************************************/ using System;public class StackTraceTest {public static void Main(){m1();}static void m1(){m2();}static void m2(){m3();}static void m3(){ResponseWrite();}static void ResponseWrite(){ResponseWriteError();}static void ResponseWriteError(){//将错误信息写入日志 Console.WriteLine(GetStackTraceModelName()); }/// <summary>/// @Author: HTL/// @Email: Huangyuan413026@163.com/// @DateTime: 2015-06-03 19:54:49/// @Description: 获取当前堆栈的上级调用方法列表,直到最终调用者,只会返回调用的各方法,而不会返回具体的出错行数,可参考:微软真是个十足的混蛋啊!让我们跟踪Exception到行把!(不明真相群众请入) /// </summary>/// <returns></returns>static string GetStackTraceModelName(){//当前堆栈信息System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();System.Diagnostics.StackFrame[] sfs = st.GetFrames();//过虑的方法名称,以下方法将不会出现在返回的方法调用列表中string _filterdName = "ResponseWrite,ResponseWriteError,";string _fullName = string.Empty, _methodName = string.Empty;for (int i = 1; i < sfs.Length; ++i){//非用户代码,系统方法及后面的都是系统调用,不获取用户代码调用结束if (System.Diagnostics.StackFrame.OFFSET_UNKNOWN == sfs[i].GetILOffset()) break;_methodName = sfs[i].GetMethod().Name;//方法名称//sfs[i].GetFileLineNumber();//没有PDB文件的情况下将始终返回0if (_filterdName.Contains(_methodName)) continue;_fullName = _methodName + "()->" + _fullName;}st = null;sfs = null;_filterdName = _methodName = null;return _fullName.TrimEnd('-','>');} }
使用StackTrace堆栈跟踪记录详细日志(可获取行号)
出处:http://www.cnblogs.com/huangtailang/p/4550177.html
转载于:https://www.cnblogs.com/mq0036/p/6540502.html
C#获取堆栈信息,输出文件名、行号、函数名、列号等相关推荐
- android qq登录 获取用户信息吗,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...
[PHP] 纯文本查看 复制代码<?php // header header("Content-Type:application/json"); error_reportin ...
- 企业微信获取用户信息响应40029(微信小程序与公众号出现类似问题应该是同样的原因)
企业微信获取用户信息响应40029 在对接企业微信的时候需要通过code去获取userId,但是会返回40029的error码,经过测试与验证原因是访问地址 https://open.weixin.q ...
- PHP 数据类型划分(8种)、获取数据(变量)的类型函数、单引号和双引号的字符串区分转义符、定界符、拓展
首先,我们来看看八种数据类型划分有哪些? 数据类型划分: 基本类型(标量类型): 整数类型:int integer 浮点数类型:float double 字符串类型:string 布尔类型:bo ...
- mysql获取当前时间_MYSQL proxysql 在深入 信息获取和信息输出
ProxySQL 前两期针对不同的MYSQL高可用的方式来说的, 本期会更加深入到PROXYSQL 的一些本身的东西. 在PROXYSQL 中有一个表,存储了所有的global variables, ...
- linux替换指定行指定列的内容,linux – sed替换特定行号的特定列号值
这是一种方式: $sed '/^username4/{s/ [^ ]*/ anything/3}' file username1 20130310 enabled 20130310 enabled u ...
- python 打印当前行号_python中获取当前位置所在的行号和函数名(转)
http://www.vimer.cn/2010/12/%E5%9C%A8python%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E4%BD%8D%E7 ...
- 获取java异常堆栈信息_Java 实例 - 获取异常的堆栈信息
全屏 Java 实例 - 获取异常的堆栈信息 以下实例演示了使用异常类的 printStack() 方法来获取堆栈信息: Main.java 文件public class Main{ public s ...
- 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)
之前写过一篇微信公众号开发–自定义菜单跳转页面并获取用户信息 由于当时是刚学习微信公众号开发当时的思路虽然可行,不过不是最好的,最近也用到了需要获取用户信息的地方,再次整理一下. 流程 注意点 ### ...
- Android 获取地理位置信息 封装好了 直接用
前言:花了一个早上研究了以下android获取经纬度,然后网上的参考资料都是杂七杂八,基本上都是过去几年的,现在我用 android6.0参照别人的结果发生好多错误,我的内心几乎是崩溃的.后来,不断百 ...
- python中traceback获取异常信息
在日常工作中,我们常常会碰到异常,我们想在异常发生的时候,不但能显示异常发生的位置,还能看到异常方法被调用的堆栈信息,在python中怎么实现呢? 实际上python提供了一个traceback来实现 ...
最新文章
- LeetCode刷题记录14——257. Binary Tree Paths(easy)
- Angular应用提高打包速度
- Netmeeting的四个端口
- CSP认证201612-3	权限查询[C++题解]:模拟题、结构体、set、有点复杂
- python中函数的参数
- 2021年中国一次性弹性泵市场趋势报告、技术动态创新及2027年市场预测
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)...
- java多线程生产消费者_JAVA多线程实现生产者消费者的实例详解
- Extjs4.1.1视频教程下载
- 数字图像处理与机器视觉,机器视觉算法与应用 pdf电子版
- Dynamic 365 中创建编码规则
- mac 环境变量 配置
- (转)中国IT界名人
- Linux 系统编程-文件IO-文件描述符、open函数的使用、实现touch命令
- Catagory分类
- Second season seventh episode,Ross finds out Rachel like him,what will he do???
- 社群空间站一键发布微信群精品优质社群的搜索和发布平台源码
- SSL/TLS安全:Schannel中WinShock漏洞及解决办法
- Java代码测试大端小端
- Oracle同步数据到MySQL