一: Environment.StackTrace

   可能我们看到最多的就是catch中的e参数,里面会有一个StackTrace,然后不可否认的这玩意太有用了,它会把调用堆栈

中的信息输出出来,有了它,我们就可以快速的知道运行代码的执行流并且快速的定位到问题。

       有时候我们会遇到这样两个问题:

①:线上的bug在本地不能重现。

②:由于太多的多态,设计模式,程序员反而对线上的代码执行流向会搞的稀里糊涂的。

     为了搞清楚并解决这两个问题,我们看生产日志的时候很在乎代码的执行流以及想获取当前上下文的可疑变量值。获取可疑的

变量值,这个好说,我们通过记录一些变量值到log就可以了,但是怎么记录下当前语句的调用堆栈信息呢?这篇就是我要介绍的一

个属性,很简单,  答案也就在标题上,下面我们看看代码。

      class Program
{
static void Main(string[] args)
{
Person person = new Person(); person.Fly(); Console.Read();
}
} class Person
{
public void Fly()
{
Fly("test");
} public void Fly(string name)
{
Console.WriteLine("我的log日志。\n\n{0}", Environment.StackTrace);
}
}   这不。。。文件名,方法名,行数都已经脱裤了,也算是给我们看生产日志时候的一把利器吧。 二:Trim   这个我想没有程序员说不知道,但是里面有一个重载,这个不知道有多少程序员知道~ 可以看到,我可以去掉字符串前后的指定字符,只要我在char[]中申请即可,而不是仅仅去掉空格,这次为什么要提它,是因为前 几天用asp对接.net的时候遇到的,在asp中有一个join方法,但是它不像C#中的String.Join(",")方法可以去掉尾部的“,” ,比如 数组{,,},在asp中join后会变成“,,,”,而C#中会变成"1,2,3",这个时候当asp传过来的话,在C#中就可以用Trim来剔除 尾部的“,”了。 var s = "1,2,3,"; var r = s.Trim(new char[] { ',' }); Console.WriteLine(r); Console.Read();  

StackTrace,Trim的更多相关文章

  1. 挖一挖C#中那些我们不常用的东西之系列(3)——StackTrace,Trim

    时间太快了,三月又要过去了,告别一下...继续期待生死未卜的四月,今天我们继续挖一挖. 一: Environment.StackTrace 可能我们看到最多的就是catch中的e参数,里面会有一个St ...

  2. MyBatis基础入门《十九》动态SQL(set,trim)

    MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...

  3. php的empty(),trim(),strlen()方法

    如果empty()函数的参数是非空或非零的值,则empty()返回FALSE.换句话说,"".0."0".NULL.array().var$var:以及没有任何 ...

  4. Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

    课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str=& ...

  5. SSD 固态硬盘,Trim指令 ,查看状态、开启、关闭

    一说到SSD 固态硬盘,经常会看到Trim指令这个名词,那什么是Trim?   Trim是什么? 为了解决硬盘降速的问题,微软联合各大SSD厂商开发了一个新技术——Trim.Trim指令也叫disab ...

  6. Gradle 命令之 --stacktrace , --info , --debug 用法

    FAQ: Android studio 出现错误Run with --stacktrace option to get the stack trace. Run with --info or --de ...

  7. C++ 使用STL string 实现的split,trim,replace-修订

    写个小工具函数 #include <iostream> #include <vector> using namespace std; namespace strtool { s ...

  8. C#获取堆栈信息,输出文件名、行号、函数名、列号等

    命名空间:System.Diagnostics 得到相关信息: StackTrace st = new StackTrace(new StackFrame(true));StackFrame sf = ...

  9. C#获取当前堆栈的各调用方法列表

    在使用.NET编写的代码在debug时很容易进行排查和定位问题,一旦项目上线并出现问题的话那么只能依靠系统日志来进行问题排查和定位,但当项目复杂时,即各种方法间相互调用将导致要获取具体的出错方法或调用 ...

随机推荐

  1. 使用Qemu调试内核

    利用Qemu进行内核源码级调试 http://blog.csdn.net/gdt_a20/article/details/7231652 用Qemu调试Linux内核 http://blog.chin ...

  2. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  3. Python OpenCV —— Border

    关于border的部分,边缘处理. # -*- coding: utf-8 -*- """ Created on Wed Sep 28 00:58:51 2016 @au ...

  4. HDU2073(暴力) VS HDU5214(贪心)

    题意:给出n组l[i],r[i],求出能够相互连接的最大个数,比如(1,2) ,(2,3),(5,6)就是可以连接的3组数据: 思路:2073数组大小为100,纯暴力就可以了,不过注意排序时,按照r的 ...

  5. win7 64位搭建scrapy

    http://blog.csdn.net/it_yuan/article/details/23856713 win7 64位系统依赖的scrapy文件链接:http://pan.baidu.com/s ...

  6. iOS支付

    1.IOS purchase 介绍 所谓的IOS 内支付就是在应用中内嵌Store,在iOS APP 中使用Store Kit framework来实现In-App Purchase,Store Ki ...

  7. Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果

     Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...

  8. 原来DataTable的Distinct竟如此简单!

    DataView可以帮我们直接获取Distinct数据, DataTable dataTable;DataView dataView = dataTable.DefaultView; DataTabl ...

  9. 触摸事件UITouch的用法

    触摸屏幕是iOS设备接受用户输入的主要方式,包括单击.双击.拨动以及多点触摸等,这些操作都会产生触摸事件. 在Cocoa中,代表触摸对象的类是UITouch.当用户触摸屏幕后,就会产生相应的事件,所有 ...

  10. USB电源管理

    在USB总线接口协议中,由于涉及电源供电,因此协议中规定了完整的电源管理方案.通过USB电源管理可以实现USB设备的激活.挂起.空闲和睡眠等,从而降低无效的功率消耗,实现系统电源的有效使用和合理分配. ...