c# 如何获取当前方法的调用堆栈

c# 调试程序时常常需要借助 call stack 查看调用堆栈,实际上通过code也可以获取:

    class Program
    {
        static void Main(string[] args)
        {
            Test();
        }

        private static void Test()
        {
            var result = Sum(1, 2);
        }

        private static int Sum(int num1, int num2)
        {
            var stacktrace = new StackTrace();
            for (var i = 0; i < stacktrace.FrameCount; i++)
            {
                var method = stacktrace.GetFrame(i).GetMethod();                Console.WriteLine(method.Name);
            }
            return num1 + num2;
        }
    }

结果:

原文地址:https://www.cnblogs.com/chenyingzuo/p/12003646.html

时间: 2024-10-20 05:29:10

c# 如何获取当前方法的调用堆栈的相关文章

LinkedList练习-队列获取元素方法、堆栈获取元素方法!

堆栈:如同一个水杯.先进后出. 队列:如同一个水管,先进先出. import java.util.*; class DuiDemo { private LinkedList link; DuiDemo() { link = new LinkedList(); } public void myAdd(Object obj)//对外提供一个添加元素的方法,调用LinkedList本身的方法以封装对外提供. { link.addFirst(obj); } public Object myGet()//

VS2015--在 Visual Studio 中调试时映射调用堆栈上的方法

https://msdn.microsoft.com/zh-cn/library/dn194476.aspx 在 Visual Studio 中调试时映射调用堆栈上的方法 创建代码图,以便在调试时对调用堆栈进行可视化跟踪.你可以在图中进行标注以跟踪代码执行的操作,以便专注于查找 Bug. 生成调用堆栈图 1 开始调试.(键盘:"F5") 2 在你的应用进入中断模式或你单步执行某一函数之后,请选择"代码图".(键盘:Ctrl + Shift + `) 当前的调用堆栈在

C/C++中手动获取调用堆栈

当我们的程序core掉之后,如果能获取到core时的函数调用堆栈将非常有利于定位问题.在Windows下可以使用SEH机制:在Linux下通过gdb使用coredump文件即可. 但有时候由于某些错误导致堆栈被破坏,发生拿不到调用堆栈的情况. 一些基础预备知识本文不再详述,可以参考以下文章: 函数调用栈的获取原理分析 寄存器.函数调用与栈帧 需要知道的信息: 函数调用对应的 http://www.qdmm.com/BookReader/1391649,61494012.aspx http://w

使用AOP拦截器获取一次请求流经方法的调用次数和调用耗时

引语 作为工程师,不能仅仅满足于实现了现有的功能逻辑,还必须深入认识系统.一次请求,流经了哪些方法,调用了多少次DB操作,多少次API操作,多少次IO操作,多少CPU操作,各耗时多少 ? 开发者必须知道这些运行时数据,才能对系统的运行有更深入的理解,更好滴提升系统的性能和稳定性. 完成一次订单导出任务,实际上是一个比较复杂的过程:需要访问ES 来查询订单,调用 API 及访问 Hbase 获取订单详情数据,写入和上传报表文件,更新数据库,上报日志数据等:在大流量导出的情形下,采用批量并发策略,多

类型:Ajax;问题:ajax调用ashx参数获取不到;结果:ashx文件获取$.ajax()方法发送的数据

ashx文件获取$.ajax()方法发送的数据 今天在使用Jquery的ajax方法发送请求时,发现在后台中使用ashx文件无法接收到ajax方法中传递的参数,上网查了一下原因后发现了问题所在,原来是我在$.ajax方法中指明了"contentType: 'application/json; charset=utf8'",所以才导致了在ashx文件中处理请求时无法获取传递到服务器端的参数, 正确的写法如下: 1 $.ajax({ 2 url: '/Handler1.ashx?operF

如何重建一个损坏的调用堆栈(callstack)

原文作者:Aaron Ballman原文时间:2011年07月04日原文地址:http://blog.aaronballman.com/2011/07/reconstructing-a-corrupted-stack-crawl/ 翻译:magictong 时间:2014年05月29日夜 后记:可惜原始的DUMP文件作者并没有上传 在我的日常工作中.我经常阅读来之微软WinQual(译注:https://sysdev.microsoft.com/ http://en.wikipedia.org/

java获取当前方法

1.获取当前方法堆栈,我们一般用 StackTraceElement[] stes = Thread.currentThread().getStackTrace(); 想要获取当前方法,切记不够灵活,使用数组stes的固定index(网上不少是这样说的,请明辨之). 让我们来看api怎么说的吧? getStackTrace public StackTraceElement[] getStackTrace() 返回一个表示该线程堆栈转储的堆栈跟踪元素数组.如果该线程尚未启动或已经终止,则该方法将返

arm-eabi-addr2line工具跟踪Android调用堆栈

使用arm-eabi-addr2line工具跟踪Android调用堆栈作者:liangshengyang转自:http://www.linuxidc.com/Linux/2011-01/31803.htm 在通常的C/C++代码中,可以通过响应对内存操作不当引起的Segmentation Fault错误即信号SIGSEGV(11)做出响应处理.只要在程序中设置SIGSEGV的handler中,调用libc的backtrace,打出对应的堆栈信息,很快就能找到问题所在.但在Android中,bio

程序中打印当前进程的调用堆栈(backtrace)

为了方便调式程序,产品中需要在程序崩溃或遇到问题时打印出当前的调用堆栈.由于是基于Linux的ARM嵌入式系统,没有足够的空间来存放coredump文件. 实现方法,首先用__builtin_frame_address()函数获取堆栈的当前帧的地址(faddr), ×faddr(栈帧的第一个单元存放的数据)即当前函数的返回地址,及调用函数中的指令地址.×(faddr-1)是调用函数的栈帧的地址,即栈帧中保存了调用函数的栈帧的地址.由此可知,同一线程的所有栈帧组成了一个链表.遍历此链表,就可以打印