如何将stacktrace行拆分为命名空间、类、方法文件和行号?C#堆栈跟踪的形式为:atFoo.Core.Test.FinalMethod(Dohdoh)inC:\ProjectssrcCore.TestsTest.cs:line21atFoo.Core.Test.AnotherMethod(Barbar)atFoo.Core。测试。AMethod()inC:ProjectssrcCore.TestsTest.cs:line6atFoo.Core.Test.c__DisplayClass7.b__6(Object_)inC:ProjectssrcCore.TestsTest.cs:line35如何从每一行检索命名空间、类、方法,文件和行号?将不胜感激一些想法和意见。如果您从StackTrace获取,则可以通过GetFrame遍历StackFrames并调用GetMethod、GetFileName和GetFileLineNumber。可以从方法中检索命名空间和类。编辑响应第一条评论(不幸的是我们从Exception.StackTrace获得跟踪),您可以调用StackTrace(Exception)构造函数。编辑我应该链接到这个构造函数-StackTrace(Exception,bool)。我读了AustinSalonen的回答,这显然更好,但我已经开始使用正则表达式了。所以我还是会写。Regexr=newRegex(@"at(?.*).(?.*).(?.*(.*))in(?.*):line(?d*)");varresult=r.Match(@"atFoo.Core.Test.FinalMethod(Dohdoh)inC:ProjectssrcCore.TestsTest.cs:line21");if(result.Success){string_namespace=result.Groups["namespace"].值.ToString();字符串_class=result.Groups["class"].Value.ToString();字符串_method=result.Groups["方法"].Value.ToString();string_file=result.Groups["文件"].Value.ToString();string_line=result.Groups["line"].Value.ToString();Console.WriteLine("命名空间:"+_namespace);Console.WriteLine("类:"+_class);Console.WriteLine("方法:"+_method);Console.WriteLine("文件:"+_file);Console.WriteLine("线路:"+_line);StackTraceParser可以输出堆栈跟踪文本(例如,通常由Environment.StackTrace或Exception.StackTrace返回)解析回一系列堆栈跟踪帧,包括以下组件:类型方法参数类型和名称文件和行信息,如果存在它可以作为NuGet源码包直接嵌入到C#项目中。但是,它需要指定一些功能,而且它的用途不是很明显。publicstaticIEnumerableParse(stringtext,FunctokenSelector,FuncmethodSelector,FuncparameterSelector,Func,TParameters>parametersSelector,FuncsourceLocationSelector,Funcselector)请参阅https://github.com/atifaziz/StackTraceParser和https://bitbucket。例子在/project-elmah/main/src/2a6b0b5916a6b4913ca5af4c22c4e4fc69f1260d/src/Elmah.AspNet/ErrorDetailPage.cs?at=default&fileviewer=file-view-default以上是C#学习教程:Howtosplitstacktracelinesintonamespaces,classes,方法文件和行号?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
