Linux üzerinde çalışan programlar işletim sisteminin yönettiği kaynakları kullanmak istediğinde (dosya okuma, proses yaratmak, vb) işletim sistemine sistem çağrıları yapar.
Sistem çağrıları, çekirdek seviyesinde çalışıp gerekli işlemleri gerçekleştirerek kontrolü tekrar kendisini çağıran programa bırakır.
Anlaşılacağı üzere sistem çağrıları (System Calls) programlarla işletim sistemi arasında bir arayüz sağlamaktadır. Sistem çağrılarına örnek olarak open, read, close, fork, recvfrom, signal, mprotect verilebilir.
Bir program strace ile başlatılırsa veya çalışırken strace programa bağlanırsa (attach) ilgili programın yaptığı bütün sistem çağrıları takip edilebilir. Aşağıdaki ekran çıktısında ls komutu strace ile başlatılmış ve yaptığı sistem çağrıları gösterilmiştir.

linux strace 1
strace, sergilediği sistem çağrılarıyla programların davranışlarının izlenebilmesini sağlamakta, problemlerin tespit edilmesinde ve programların karakteristiğini göstermekte çok önemli bir rol oynamaktadır.
Örneğin aşağıda test.txt dosyası yokken strace ile çalıştırılmıştır. Görüldüğü üzere open sistem çağrısı ile test.txt dosyasını açmaya çalışmış ancak dosya bulunmadığı için ENOENT hatası alarak ekrana default mesajı bastırmıştır.
(continue reading…)

Loading