microsoft / ConcordExtensibilitySamples

Visual Studio Debug Engine Extensibility Samples
Other
121 stars 50 forks source link

How to change the value of an argument at a breakpoint? #100

Open renerod opened 1 year ago

renerod commented 1 year ago

We've implemented an EE for our language basing it on the Iris example. When running and hitting a breakppoint, we can change values of globals and locals but not of method arguments. This is the IL code we generate for updating the second arg with some value:

.method public hidebysig instance void '$.M1'(string 'elUno', valuetype [mscorlib]System.Decimal 'elDos') cil managed { .locals init ([0] valuetype [mscorlib]System.Decimal '#cash', [1] string 'des@', [2] string 'des@ita', [3] valuetype [mscorlib]System.DateTime 'horaL', [4] valuetype [mscorlib]System.DateTime 'diaL', [5] valuetype [mscorlib]System.Decimal 'diaDec', [6] string 'diaStr', [7] valuetype [mscorlib]System.DateTime 'stamp') ldc.i4 76543 ldc.i4.0 ldc.i4.0 ldc.i4 131072 newobj instance void [mscorlib]System.Decimal::.ctor(int32, int32, int32, int32) starg.s 2 ret }

but the value does not get changed in the program. Are we generating the right IL for it? What are we missing?