c# - 如何在堆栈跟踪中获取参数值

标签 c# .net exception stack-trace system.diagnostics

我可以通过 StackTrace 使用如下方式获取有关参数的信息:

catch (Exception ex)
{
    var st = new StackTrace(ex);

    System.Reflection.ParameterInfo pi = st.GetFrame(0).GetMethod().GetParameters().First();
}

我想知道如何获取参数的值。示例:

如果我在堆栈跟踪中的方法是这样的:

void MyMethod(object value)

电话是这样的:

MyMethod(10);

我想得到值 10。 我该怎么做?

最佳答案

有两种方法。更强大的是用于 .NET 调试的 COM API。例如,调用堆栈中函数的参数和局部变量都可以从 ICorDebugILFrame 访问。 .但这必须从一个单独的进程运行,该进程作为调试器附加到您的进程。

对于进程内省(introspection),有 Profiler API, which also can find information about function arguments .查看有关“影子堆栈”的信息。

关于c# - 如何在堆栈跟踪中获取参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769651/

相关文章:

c# - 如何阻塞直到异步调用完成?

java - FXMLLoader.load(url) 抛出的 IOException 将不会被捕获

c# - 一个读者,许多作者

c# - datagridview 行点击

c# - 不同程序集中系统命名空间类型和用户定义类型之间的命名冲突

c# - '<null>' 类型的值不能用作默认参数,因为没有到 'T' 类型的标准转换

.net - 在 .NET Windows 服务中解析 HTML 和获取资源

c# - 请求类型为“System.Data.Odbc.OdbcPermission..”的权限需要帮助

c# - Newtonsoft.Json 版本 8.0.2 无法加载文件或程序集错误

c - main() 在运行时异常时返回什么?