Hi,
I am working on dynamic instrumentation of Go programs at run time, possibly without static source-code instrumentation. As I would like a solution as close to Go and standard as possible, I was first thinking of using `go generate` to generate a file adding things `reflect` doesn't provide such as the list of packages, functions, global variables... That way, I should be able to use `reflect` to modify any dynamic calls by modifying the method tables of their underlying type representations.
But regarding statically linked calls, the less intrusive technique I found are uprobes, which is linux-specific. And at the opposite, there are user-space binary code instrumentation libraries such as dyninst that modify the code at run time...
So I am wondering if anyone here has any thoughts on this subject, that doesn't seem to be solved for Go programs.
Thanks!
Julio