我想使用dbg:tracer跟踪Erlang GC的所有行为,并打印出跟踪的事件。
1> dbg:tracer().
2> dbg:p(self(), [garbage_collection]).
3> my_module:function([Args]).
4> dbg:stop().
5> dbg:show_trace().
...我只想在my_module:function/0函数调用的执行过程中跟踪垃圾回收。一旦函数返回,跟踪就应该停止。
发布于 2016-12-08 03:22:37
也许有一种更好的方法可以做到这一点,但我建议在您关心的函数返回后立即关闭跟踪。像这样的东西应该是有效的:
1> dbg:tracer().
2> GcOfMyModule = fun() ->
dbg:p(self(), [garbage_collection]),
my_module:function([Args]),
dbg:stop()
end
3> GcOfMyModule().
5> dbg:show_trace().将dbg:p/2、my_module:function/1和dbg:stop/0调用都包装在一个函数中将意味着每个函数都将紧跟在它之前的函数之后执行。我最初是从这个答案的最后部分得到这个想法的,在那里它需要在一定数量的事件https://stackoverflow.com/a/1954980/1245380之后自动停止跟踪。
https://stackoverflow.com/questions/40919120
复制相似问题