Краткий ответ:
Один из способов - просмотреть вызов сообщений, за которыми следуют spawn сообщений.
Длинный ответ:
Я не эксперт по dbg . Причина в том, что я использовал (imho гораздо лучше, безопаснее и еще удобнее) альтернативу: pan , от https://gist.github.com/gebi/jungerl/tree/master/lib/pan
API суммируется в HTML-документе .
С помощью pan: start вы можете отслеживать трассировку, задав модуль обратного вызова , который получает все сообщения трассировки. Тогда ваш модуль обратного вызова может их обработать, например, отслеживать процессы в ETS или данные о состоянии, которые передаются при каждом вызове.
Формат сообщений трассировки указывается в pan: scan .
Для примеров модулей обратного вызова вы можете посмотреть src / cb _ *. Erl .
Теперь к вашему вопросу:
С pan вы можете отслеживать обработку процессов и вызовы в вашем модуле favourit следующим образом:
pan:start({ip, CallbackModule}, Node, all, [procs,call], {Module}).
где Module - это имя вашего модуля (в данном случае: sptest)
Затем модуль обратного вызова (в данном случае: cb_write) может просматривать сообщения spawn , которые следуют за сообщением call в том же процессе, например ::
32 - {call,{<6761.194.0>,{'fun',{shell,<node>}}},{sptest,run,[[97,97,97]]},{1332,247999,200771}}
33 - {spawn,{<6761.194.0>,{'fun',{shell,<node>}}},{{<6761.197.0>,{io,fwrite,2}},{io,fwrite,[[77,101,115,115,97,103,101,58,32,126,115,126,110],[[97,97,97]]]}},{1332,247999,200805}}
Поскольку pan также использует тот же конец трассировки, что и dbg , сообщения трассировки (и информацию) также можно собирать с использованием BIF-файлов трассировки Erlang, но pan намного безопаснее.