最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2022年09月04日 07:47:57   作者:人生短短幾個(gè)秋  
StackTrace, 位于 System.Diagnostics 命名空間下,名字很直觀,它代表一個(gè)方法調(diào)用的跟蹤堆棧,里面存放著按順序排列的棧幀對象(StackFrame),每當(dāng)發(fā)生一次調(diào)用,就會(huì)壓入一個(gè)棧幀,這篇文章主要介紹了.NET使用StackTrace獲取方法調(diào)用信息,需要的朋友可以參考下

前言

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

介紹

StackTrace, 位于 System.Diagnostics 命名空間下,名字很直觀,它代表一個(gè)方法調(diào)用的跟蹤堆棧,里面存放著按順序排列的棧幀對象(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本身,所以跳過;fNeedFileInfo設(shè)置成 true,否則調(diào)用者所在文件等信息會(huì)為空。
簡單創(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),所以打印出來的順序也是由近及遠(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序

    Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序

    這篇文章主要介紹了Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • C#中使用SQLite數(shù)據(jù)庫的方法介紹

    C#中使用SQLite數(shù)據(jù)庫的方法介紹

    SQLite是一個(gè)開源的輕量級(jí)的桌面型數(shù)據(jù)庫,它將幾乎所有數(shù)據(jù)庫要素(包括定義、表、索引和數(shù)據(jù)本身)都保存在一個(gè)單一的文件中。SQLite用C編寫實(shí)現(xiàn),它在內(nèi)存消耗、文件體積、操作性能、簡單性方面都有不錯(cuò)的表現(xiàn)
    2012-01-01
  • Asp.NET Core 如何調(diào)用WebService的方法

    Asp.NET Core 如何調(diào)用WebService的方法

    這篇文章主要介紹了Asp.NET Core 如何調(diào)用WebService的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • asp.net core3.1 引用的元包dll版本兼容性問題解決方案

    asp.net core3.1 引用的元包dll版本兼容性問題解決方案

    這篇文章主要介紹了asp.net core 3.1 引用的元包dll版本兼容性問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • CHECKBOX 的全選、取消及跨頁保存的實(shí)現(xiàn)方法

    CHECKBOX 的全選、取消及跨頁保存的實(shí)現(xiàn)方法

    CHECKBOX的操作在頁面中很常見,比如全選、取消、跨頁保存等等,下面有個(gè)不錯(cuò)的示例,大家可以嘗試操作下
    2013-10-10
  • C# 進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)(二進(jìn)制、十六進(jìn)制、十進(jìn)制互轉(zhuǎn))

    C# 進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)(二進(jìn)制、十六進(jìn)制、十進(jìn)制互轉(zhuǎn))

    這篇文章主要介紹了C# 進(jìn)制轉(zhuǎn)換的實(shí)現(xiàn)(二進(jìn)制、十六進(jìn)制、十進(jìn)制互轉(zhuǎn)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • .net6簡單使用NPOI讀取Excel的項(xiàng)目實(shí)踐

    .net6簡單使用NPOI讀取Excel的項(xiàng)目實(shí)踐

    本文主要介紹了.net6簡單使用NPOI讀取Excel的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C# SetCursorPos簡介及使用說明

    C# SetCursorPos簡介及使用說明

    該函數(shù)把光標(biāo)移到屏幕的指定位置,如果新位置不在由ClipCursor函數(shù)設(shè)置的屏幕矩形區(qū)域之內(nèi),則系統(tǒng)自動(dòng)調(diào)整坐標(biāo),使得光標(biāo)在矩形之內(nèi)
    2012-12-12
  • ASP.NET實(shí)現(xiàn)推送文件到瀏覽器的方法

    ASP.NET實(shí)現(xiàn)推送文件到瀏覽器的方法

    這篇文章主要介紹了ASP.NET實(shí)現(xiàn)推送文件到瀏覽器的方法,可實(shí)現(xiàn)將文件推送到瀏覽器供用戶瀏覽或下載的功能,需要的朋友可以參考下
    2015-06-06
  • datagrid綁定list沒有數(shù)據(jù) 表頭不顯示的解決方法

    datagrid綁定list沒有數(shù)據(jù) 表頭不顯示的解決方法

    datagrid綁定list沒有數(shù)據(jù) 表頭不顯示的問題,那是因?yàn)?綁定了null,你給list new一下就好 表頭就會(huì)有啦
    2013-05-05

最新評(píng)論

天等县| 大竹县| 大安市| 古交市| 庐江县| 天祝| 青龙| 望都县| 南木林县| 福泉市| 玉屏| 太保市| 宕昌县| 遵义县| 个旧市| 志丹县| 巴东县| 安福县| 苗栗县| 都兰县| 辽源市| 白沙| 兴仁县| 夏河县| 丹东市| 台州市| 西乌珠穆沁旗| 陈巴尔虎旗| 静安区| 富源县| 绥芬河市| 垫江县| 灵璧县| 康保县| 修水县| 全椒县| 古浪县| 绿春县| 井冈山市| 武夷山市| 大荔县|