C#中打印出当前堆栈

   使用C#过程中,除了通过try catch中的exception来打印当前的堆栈信息,我们还可以主动通过System.DiagnosticsStackTrace这个类来主动打印出堆栈信息。

   代码:

using System;
using System.Diagnostics;
namespace Test2
{
    class Program
    {
        static void Main(string[] args)
        {
            DebugInfo db = new DebugInfo();
            Console.WriteLine(db.Test1());
        }

     

    }

    class DebugInfo
    {
      public String Test1()
        {
            string info = null;
            //设置为true,这样才能捕获到文件路径名和当前行数,当前行数为GetFrames代码的函数,也可以设置其他参数
            StackTrace st = new StackTrace(true);
            //得到当前的所以堆栈
            StackFrame[] sf = st.GetFrames();
            for (int i = 0; i < sf.Length; ++i)
            {
                info = info + "\r\n" + " FileName=" + sf[i].GetFileName() + " fullname=" + sf[i].GetMethod().DeclaringType.FullName + " function=" + sf[i].GetMethod().Name + " FileLineNumber=" + sf[i].GetFileLineNumber();         
           }
          return info;
        }

    }

}

结果:

   需要注意的是,无论是Debug还是Release模式,new StackTrace(true)的时候设置为true,并且exe路径下存在pdb编译信息文件,这才可以显示当前路径文件名和行数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值