继我上一个问题之后,我想将堆中的所有变量(从当前和前一个帧)可以在这里看到:Is there a way to examine the stack variables at runtime in C#?是否有一种简单的方法来获取C#(或CIL)中当前堆栈帧中的所有局部变量
我被建议手动拦截调用或使用像PostSharp AOP框架来简化这样的任务。我查看了PostSharp,并且拦截参数不包含当前堆栈帧中的变量。我想知道是否有一种简单的方法来自动获取当前堆栈帧中的所有局部变量。我想我可以执行代码分析并生成将所有这些值复制到集合中的代码,但也许有一种内置机制可以实现。
在此先感谢您的任何建议。
编辑:我应该给出更多的细节,为什么我想这样做。我希望能够在方法中暂停执行。如果我有堆栈的内容,我可以稍后恢复执行,甚至可以序列化它并在另一台机器上继续执行(假设它是相对简单的代码,例如没有线程或I/O)。运行一个代码分析工具可以让我自动生成保存这个状态的额外代码。我想我可能不得不分析CIL来做到这一点。
您需要做什么? – 2011-02-27 21:33:47
祝你的目标好运。我建议阅读.Net中垃圾回收的细节 - 它确实会暂停托管代码的执行,并用方法的数据进行操作。 (搜索像“insde .net垃圾回收”开始) – 2011-03-01 00:23:39