在我之前的问题之后,我想转储堆栈中的所有变量(从当前帧和所有前一帧),可以在这里看到:有没有办法在 C# 中在运行时检查堆栈变量?
有人建议我手动拦截调用或使用 PostSharp 之类的 AOP 框架来简化此类任务。我查看了 PostSharp,拦截参数不包括当前堆栈帧中的变量。我想知道是否有一种简单的方法可以自动获取当前堆栈帧中的所有局部变量。我想我可以执行代码分析并生成将所有这些值复制到集合中的代码,但也许有一个内置机制可以做到这一点。
在此先感谢您的任何建议。
编辑:我应该更详细地说明我为什么要这样做。我希望能够在方法中间暂停执行。如果我有堆栈的内容,我可以稍后恢复执行,甚至可以将其序列化并在另一台机器上继续执行(假设它是相对简单的代码,因此没有线程或 I/O)。可以运行一个代码分析工具,它可以让我自动生成额外的代码来保存这个状态。我想我可能必须分析 CIL 才能做到这一点。