电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

前言

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

介紹

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

演示

下面代碼演示了如何獲取調(dià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)用者所在文件等信息會為空。
簡單創(chuàng)建個控制臺程序并添加幾個類模擬一下,輸出如下:

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是個棧結(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)文章希望大家以后多多支持!

標(biāo)簽: ASP.NET
主站蜘蛛池模板: 新型游乐设备,360大摆锤游乐设备「诚信厂家」-山东方鑫游乐设备 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 石家庄律师_石家庄刑事辩护律师_石家庄取保候审-河北万垚律师事务所 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 齿轮减速机电机一体机_齿轮减速箱加电机一体化-德国BOSERL蜗轮蜗杆减速机电机生产厂家 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 沥青灌缝机_路面灌缝机_道路灌缝机_沥青灌缝机厂家_济宁萨奥机械有限公司 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 湿地保护| 上海诺狮景观规划设计有限公司| 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 沈阳液压泵_沈阳液压阀_沈阳液压站-沈阳海德太科液压设备有限公司 | 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 创客匠人-让IP变现不走弯路 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 北京亦庄厂房出租_经开区产业园招商信息平台 | 公交驾校-北京公交驾校欢迎您!| 培训中心-翰香原香酥板栗饼加盟店总部-正宗板栗酥饼技术 | 盘装氧量分析仪-防爆壁挂氧化锆分析仪-安徽吉帆仪表有限公司 | 活性炭-蜂窝-椰壳-柱状-粉状活性炭-河南唐达净水材料有限公司 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 玄米影院| 许昌奥仕达自动化设备有限公司 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 |