C# Environment.StackTrace、StackFrame、Tirm的使用技巧
一、Tirm
這個我想沒有程序員說不知道,但是里面有一個重載,這個不知道有多少程序員知道~
可以看到,我可以去掉字符串前后的指定字符,只要我在char[]中申請即可,而不是僅僅去掉空格,
var s = "1,2,3,";var r = s.Trim(new char[] { ',' });Console.WriteLine(r);Console.Read();?
二、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);}}?這不。。。文件名,方法名,行數都已經脫褲了,也算是給我們看生產日志時候的一把利器吧。
?
三、StackFrame
它跟Environment.StackTrace的作用是一樣的,也是可以讓方法名、文件名、行數脫褲,用于定位bug再好不過,此外,可以通過Debug目錄下的,方法所在的類-類庫生成的dll的對應的 .pdb文件,的有無,來控制日記里是否脫褲
public void Debug(string msg){if (LoggerLevel.Debug >= _curLogLevel){LoggerEntry log = new LoggerEntry();StackFrame frame = new StackFrame(SkipFrames, true);log.file = frame.GetFileName();log.line = frame.GetFileLineNumber();log.level = GetLevelName(LoggerLevel.Debug);log.msg = msg;this.WriteLog(log);}System.Diagnostics.Trace.WriteLine(msg);}----姜彥201810311204
轉載于:https://www.cnblogs.com/jiangyan219/articles/9882286.html
總結
以上是生活随笔為你收集整理的C# Environment.StackTrace、StackFrame、Tirm的使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程手册集锦
- 下一篇: C# winForm启动最小化到任务栏右