coverage.exe and instrumenting F# files
I observed yesterday that coverage.exe balked in PdbReader.GetSegmentsByMethod()
when trying to instrument F#-derived assemblies.
By checking to see whether a new CodeSegment
entry would provoke the exception by having an identical offset to a pre-existing one, and dumping both old and new to the console, I observed that at least one, and often both, had associated line number 0x00Feefee -- i.e. were compiler generated code with no source reference.
And in the method Executor.ProcessMethod()
, which is the only place to call PdbReader.GetSegmentsByMethod()
, entries with this line number are discarded before beginning to instrument the IL code -- so it would seem to make perfect sense to discard these CodeSegment
s before putting them in the dictionary. With that change, instrumentation completes cleanly.
Of course, having built coverage.exe with C#4 for .net 4, the helper DLL it built is compiled for .net 4 as well, which has stymied my first test attempt. Oh well, enough for today.
No comments :
Post a Comment