2016-12-01 6 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 동작을 추적하고 싶습니다. 어떻게해야합니까? 두 번째 질문은 추적 프로세스를 중지 한 후입니다 (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/2, my_module:function/1 포장 및 dbg:stop/0는 각각의 기능이 바로 전에 기능 후에 실행됩니다 의미합니다 모두 하나 개의 함수를 호출합니다. 나는이 대답의 마지막 부분에서 원래 일정한 수의 이벤트 후에 자동으로 추적을 멈추는 것에 대해 아이디어를 얻었습니다. https://stackoverflow.com/a/1954980/1245380.