想监测代码执行的过程,目前是通过修改IL的方式进行代码静态注入,例如使用如下方式获取所有Console.WriteLine函数的输入值
一个参数的情况,没有任何问题
如果是多个参数:
C#的函数是自己平栈的,所以必须构造出如上图所示的堆栈才行,但是IL指令里只有dup,不能复制多个栈中的内容,现在的问题是,
有什么办法让我的函数调用完毕后堆栈恢复到调用之前
我想过使用局部变量暂时存储堆栈内容,但是我并不知道哪些局部变量可以用,例如使用stloc_1指令,但这样就会覆盖掉索引1中存储的值, 那么只能在stloc_1之前存储1,但是存哪呢?栈是不行了,只能存堆里,但感觉不太通用,需要插入很多IL才能实现
C#现在是否有这种库已经实现了类似功能,肯求各位大牛们帮帮忙!