SORU
23 Aralık 2009, ÇARŞAMBA


Trace kullanarak ve dbg Ayrık olarak

Eğer x kullanmaya başlamak:/3 ve dbg modülü izleme için sunucu aşağı yapmadan, canlı bir üretim sistemi davranışını izlemek için çalışıyorum.

documentation opaque (hafif koymak için) ve herhangi bir yararlı eğitimler online olduğu görünmüyor.

Ne geçirdiğim her gün yapmaya çalışıyorum olduğunu yakalama olanları belirli bir fonksiyon tarafından çalışan için geçerli bir izleme modülü:fonksiyon kullanarak dbg:c ve dbg:p ama hiçbir başarı

Herkes canlı Ayrık bir sistem izleme kullanmak için nasıl kısa ve öz bir açıklama var mı?

CEVAP
23 Aralık 2009, ÇARŞAMBA


İşlev çağrıları izleme için temel adımları olmayan canlı bir düğümde:

> dbg:start().   % start dbg
> dbg:tracer().  % start a simple tracer process
> dbg:tp(Module, Function, Arity, []).   % specify MFA you are interested in
> dbg:p(all, c).   % trace calls (c) of that MFA for all processes.

... trace here

> dbg:stop_clear().   % stop tracer and clear effect of tp and p calls.

Aynı anda birden fazla işlevleri için izleyebilirsiniz. Her fonksiyon için tp çağırarak fonksiyonları ekleyin. Eğer sigara için verilen işlevlerin izlemek istiyorsanız, tpl aramalısın. İşlevleri kaldırmak için, benzer bir şekilde ctp ctpl Ara. Bazı genel tp çağırır

> dbg:tpl(Module, '_', []).  % all calls in Module
> dbg:tpl(Module, Function, '_', []).   % all calls to Module:Function with any arity.
> dbg:tpl(Module, Function, Arity, []). % all calls to Module:Function/Arity.
> dbg:tpl(M, F, A, [{'_', [], [{return_trace}]}]).   % same as before, but also show return value.

Son argüman maç bir özelliktir. dbg:fun2ms kullanarak oynamak.

İşlemleri p ara ile izleme için seçebilirsiniz(). Öğeleri ayrık:eser altında açıklanmıştır. Bazı aramalar

> dbg:p(all, c).   % trace calls to selected functions by all functions
> dbg:p(new, c).   % trace calls by processes spawned from now on
> dbg:p(Pid, c).   % trace calls by given process
> dbg:p(Pid, [c, m]).  % trace calls and messages of a given process

Asla doğrudan dbg hemen hemen her şeyi senin için yapar erlang:trace aramak gerekir sanırım.

Canlı bir düğüm için altın kurallar dbg:stop_clear(). yazmanız için size sağlar kabuğu, izleme çıktısı sadece bir miktar oluşturmak için. :)

Ben sık sık oto-stop bir dizi olay sonrasında kendisini bir izleyici kullanın. Örneğin:

dbg:tracer(process, {fun (_,100) -> dbg:stop_clear();
                        (Msg, N) -> io:format("~p~n", [Msg]), N 1 end, 0
                    }).

Eğer uzak düğümlerinde (veya birden çok düğüm) hata ayıklama arıyorsanız, pan, eper, inviso veya onviso arama.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BruBearBaby

    BruBearBaby

    25 Ocak 2011
  • colacas

    colacas

    29 EKİM 2006
  • Jorrit Jongma

    Jorrit Jongm

    17 Ocak 2008