Go is statically compiled. Pretty sure you cant do dynamic instrumentation - 
like logging method entry and exit - much of this is even lost due to inlining. 
You could possibly have an instrumented stdlib and dynamically link to that, 
but that is still not dynamic instrumentation. The profiler works by using 
stack samples. 

> On Nov 15, 2018, at 10:51 AM, ju...@sqreen.io wrote:
> 
> 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
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to