亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

.NET使用StackTrace獲取方法調(diào)用信息的代碼演示

瀏覽:232日期:2022-06-08 11:23:07
目錄
  • 前言
  • 介紹
  • 演示
  • 鏈接

前言

在日常工作中,偶爾需要調(diào)查一些詭異的問(wèn)題,而業(yè)務(wù)代碼經(jīng)過(guò)長(zhǎng)時(shí)間的演化,很可能已經(jīng)變得錯(cuò)綜復(fù)雜,流程、分支眾多,如果能在關(guān)鍵方法的日志里添加上調(diào)用者的信息,將對(duì)定位問(wèn)題非常有幫助。

介紹

StackTrace, 位于 System.Diagnostics 命名空間下,名字很直觀,它代表一個(gè)方法調(diào)用的跟蹤堆棧,里面存放著按順序排列的棧幀對(duì)象(StackFrame),每當(dāng)發(fā)生一次調(diào)用,就會(huì)壓入一個(gè)棧幀;而一個(gè)棧幀,則擁有本次調(diào)用的各種信息,除了MethodBase,還包括所在的文件名、行、列等。

演示

下面代碼演示了如何獲取調(diào)用者的方法名、所在文件、行號(hào)、列號(hào)等信息。

public static string GetCaller()
{
       StackTrace st = new StackTrace(skipFrames: 1, fNeedFileInfo: true);
       StackFrame[] sfArray = st.GetFrames();
 
       return string.Join(" -> ",
    sfArray.Select(r =>
$"{r.GetMethod().Name} in {r.GetFileName()} line:{r.GetFileLineNumber()} column:{r.GetFileColumnNumber()}"));
    
}

第一幀是 GetCaller本身,所以跳過(guò);fNeedFileInfo設(shè)置成 true,否則調(diào)用者所在文件等信息會(huì)為空。
簡(jiǎn)單創(chuàng)建個(gè)控制臺(tái)程序并添加幾個(gè)類模擬一下,輸出如下:

UpdateOrder in G:\examples\MethodCall2\ClassLevel6.cs line:11 column:8 -> 
Level5Method in G:\examples\MethodCall2\ClassLevel5.cs line:8 column:9 -> 
Level4Method in G:\examples\MethodCall2\ClassLevel4.cs line:10 column:9 -> 
Level3Method in G:\examples\MethodCall2\ClassLevel3.cs line:10 column:9 -> 
Level2Method in G:\examples\MethodCall2\ClassLevel2.cs line:10 column:9 -> 
InternalMethod in G:\examples\MethodCall2\ClassLevel1.cs line:12 column:13 -> 
Main in G:\examples\MethodCall2\Program.cs line:18 column:17

可以看到因?yàn)?code>StackTrace是個(gè)棧結(jié)構(gòu)(FILO),所以打印出來(lái)的順序也是由近及遠(yuǎn)的。

鏈接

StackTrace Class https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stacktrace?view=net-6.0

StackFrame Class https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stackframe?view=net-6.0

到此這篇關(guān)于.NET使用StackTrace獲取方法調(diào)用信息的文章就介紹到這了,更多相關(guān).NET方法調(diào)用信息內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: ASP.NET
主站蜘蛛池模板: 九九视频只有精品六 | 欧美亚洲一区 | 黄色永久免费网站 | 国产一级视频 | 免费欧洲毛片a级视频老妇女 | 免费在线黄网 | 风间由美中文字幕亚洲一区 | 丁香婷婷在线 | 91亚洲视频在线观看 | 羞羞影院免费观看网址在线 | 国产毛片哪里有 | 国产毛片儿 | 性生大片一级毛片免费观看 | 午夜在线播放免费人成无 | 日韩中文字幕精品免费一区 | 51毛片 | 欧美一区二区三区免费播放 | 在线播放国产一区二区三区 | 久久r精品 | 久久久久国产一级毛片高清板 | 亚欧成人毛片一区二区三区四区 | 免费色视频 | 国产伦精品一区二区三区免费观看 | 日韩亚洲欧美一区噜噜噜 | 中文字幕久久久久 | 一级黄色在线 | 国产视频一区二区在线观看 | 国产在线拍小情侣国产拍拍偷 | 亚洲欧美日韩中另类在线 | 91糖心 | 手机毛片在线 | 欧美性禁片在线观看 | 起视碰碰97摸摸碰碰视频 | 亚洲人6666成人观看 | 亚洲欧美成人在线 | 美国一级毛片片aa免 | 成人做爰www | 亚洲精品欧美精品日韩精品 | 欧美蜜桃臀在线观看一区 | 看真人一一级毛片 | 国产挤奶水在线视频播放 |