如何获取stacktrace中的参数值我可以通过StackTrace获取参数的信息,使用类似的方法:catch(Exceptionex){varst=newStackTrace(前任);System.Reflection.ParameterInfopi=st.GetFrame(0).GetMethod().GetParameters().First();我想知道如何获取参数的值。示例:如果我在堆栈跟踪中的方法是这样的:voidMyMethod(objectvalue)并且调用是这样的:MyMethod(10);我想获得值10。我该怎么做?有两种方法。更强大的是用于.NET调试的COMAPI。例如,调用堆栈中函数的参数和局部变量都可以从ICorDebugILFrame访问。但这必须从作为调试器附加到您的进程的单独进程运行。对于进程内自省,有ProfilerAPI,它也可以找到有关函数参数的信息。查看有关“阴影堆栈”的信息。除非您要创建解决方案的高度CLR(修补)版本,否则不要使用C#。但是,将Windbg附加到您的进程,将sos.dll切换到您的线程并键入!ClrStack-p会显示大多数方法的托管调用堆栈和方法参数。即使在调试器下,这也不是万无一失的,因为由于内联和JIT优化,堆栈布局非常灵活。除此之外,一些参数甚至可能不存在于堆栈内存中,因为它们是通过寄存器传递的(这在x64平台下更常见)。回答你的第一个问题。不,您尝试的方法是不可能的。可行的解决方案是可行的,但根本不可移植。托管调试器可以部分检索您的参数,但没有100%有效的解决方案(即使在调试器下)。以上就是C#学习教程:如何获取stacktrace中共享的参数值的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
