2016-12-01 16 views
0

dbg:tracerを使用してErlang GCのすべての動作をトレースし、追跡されたイベントを出力したいと思います。Erlang dbgによって追跡されるすべてのデータを印刷するには

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関数呼び出しの実行中にガベージコレクションをトレースしたいと思います。機能が戻ったら、トレースを停止する必要があります。

+0

表示されたコマンドの問題を説明できますか?何も印刷されませんか?またErlangのどのバージョンを使用していますか? – Stratus3D

+0

私は2行目を使ってErlang GCをトレースできますが、実際には3行目の実行中にGCの動作をトレースしたいと思います。どうすればいいですか? 2番目の質問は、トレースプロセスを停止した後です(行4、どのようにデータを出力することができますか? – fvarj

+0

fvarjは私の回答があなたの問題を解決したかどうか教えてください) – Stratus3D

答えて

1

これを実行するより良い方法があるかもしれませんが、気になる機能が返されるとすぐにトレースをオフにすることをお勧めします。このような何か作業をする必要があります:

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/2my_module:function/1をラッピングし、dbg:stop/0は、各機能がその直前の関数の後に実行されますを意味しますすべて1つの関数に呼び出します。私は、この回答の最後の部分から、ある特定の回数のイベントの後に自動的にトレースを停止させるという考えを持っています。https://stackoverflow.com/a/1954980/1245380

関連する問題