Çıktıya bakarsanız buna benzeyecektir:
= Start
[0x8048209] - 0x8064cc8
[0x8048209] - 0x8064ce0
[0x8048209] - 0x8064cf8
[0x80481eb] + 0x8064c48 0x14
[0x80481eb] + 0x8064c60 0x14
[0x80481eb] + 0x8064c78 0x14
[0x80481eb] + 0x8064c90 0x14
= End
İzleme dosyası bir insan tarafından okunup anlamlandırılmayacağı için bu satırların ne anlama geldiğinin bir önemi yoktur. Bu nedenle, okunabilirliğe dikkat edilmemiştir. Bu iş için GNU C kütüphanesi ile birlikte bu izleri yorumlayan ve kullanıcı dostu bir yolla özetleyen bir uygulama gelir. Bu uygulamanın ismi mtrace'dir (aslında bir Perl betiğidir) ve bir ya da iki argüman alır. İzleme çıktısının dosya ismi mutlaka belirtilmelidir. İsteğe bağlı olarak verilebilecek ikinci argüman izleme dosyasının isminden önce verilmesi gereken ve bu izi üreten yazılımın ismidir.
drepper$ mtrace tst-mtrace log
No memory leaks.
Burada tst-mtrace isimli yazılım çalıştırılmış ve log isimli bir izleme dosyası üretilmiştir. mtrace uygulaması tarafından basılan ileti kodla ilgili bir sorun olmadığını göstermiş ve ardından ayrılan tüm bellek serbest bırakılmıştır.
Biz mtrace uygulamasını yukardaki örnek izleme dosyası için çalıştırırsak farklı bir çıktı alırız:
drepper$ mtrace errlog
- 0x08064cc8 Free 2 was never alloc'd 0x8048209
- 0x08064ce0 Free 3 was never alloc'd 0x8048209
- 0x08064cf8 Free 4 was never alloc'd 0x8048209
Memory not freed:
-----------------
Address Size Caller
0x08064c48 0x14 at 0x80481eb
0x08064c60 0x14 at 0x80481eb
0x08064c78 0x14 at 0x80481eb
0x08064c90 0x14 at 0x80481eb
mtrace uygulamasını tek argümanla çağırdık ve bu durumda betik izlerde verilen adresleri anlamlandıramadı. Daha anlamlı bir çıktı için şöyle bir çağrı yapabiliriz:
drepper$ mtrace tst errlog
- 0x08064cc8 Free 2 was never alloc'd /home/drepper/tst.c:39
- 0x08064ce0 Free 3 was never alloc'd /home/drepper/tst.c:39
- 0x08064cf8 Free 4 was never alloc'd /home/drepper/tst.c:39
Memory not freed:
-----------------
Address Size Caller
0x08064c48 0x14 at /home/drepper/tst.c:33
0x08064c60 0x14 at /home/drepper/tst.c:33
0x08064c78 0x14 at /home/drepper/tst.c:33
0x08064c90 0x14 at /home/drepper/tst.c:33
Ansızın, çıktı daha ayrıntılı oluverdi. Yazılımcı artık hangi işlev çağrısının bozukluğa sebep olduğunu hemen görebilir.
Bu çıktının yorumlanması karmaşık değildir. En fazla iki farklı durum saptanmıştır. İlkinde, ayırma işlevlerinden döndürülmemiş göstericiler için free çağrılmış. Bu genelde çok kötü bir sorundur ve çıktının ilk üç satırında benzer bir durum gösterilmiştir. Bu gibi durumlar az görülür, çünkü sorun kendini çok dramatik olarak gösterir: yazılım normal olarak çöker.
Diğer durum saptanması daha zor olan bellek artıklarıdır. Çıktıda gördüğünüz gibi mtrace işlevi tüm bu bilgiyi toplamıştır. Bu çıktıya bakarak şunu söyleyebiliriz: yazılım /home/drepper/tst-mtrace.c kaynak dosyasının 33. satırındaki bir ayırma işlevini dört kere çağırmış ve yazılım sonlandırılmadan önce bu bellek serbest bırakılmamış. Acaba bu araştırılmayı bekleyen gerçek bir sorun mudur?