Panduan Lengkap strace Linux: Melacak System Call

Pengantar

Memahami pola interaksi antara aplikasi dan kernel sistem operasi merupakan kunci utama dalam investigasi masalah sistem di lingkungan Linux. Melalui panduan praktis ini, Anda akan mempelajari cara memasang dan mengoperasikan strace—sebuah utilitas diagnostik andal untuk memantau panggilan sistem (system call) secara langsung demi mengungkap akar masalah aplikasi yang bermasalah.

Instalasi strace dan Pelacakan Dasar System Call

Langkah pertama diawali dengan memperbarui repositori perangkat lunak dan menginstal utilitas strace ke dalam sistem Ubuntu Anda.

Memperbarui repositori dan menginstal paket strace

Selanjutnya, siapkan sebuah berkas teks pengujian dengan mengeksekusi perintah echo 'Linux strace test content' > /tmp/testfile.txt.

Membuat file pengujian teks

Fungsi utama strace adalah mencegat serta mencatat setiap pertukaran sinyal dan instruksi sistem (system call) yang dikirimkan aplikasi menuju kernel sepanjang proses berjalan.
Saat mengeksekusi program cat menggunakan strace, terminal akan memaparkan siklus hidup manipulasi berkas secara mendetail—mulai dari pembukaan file (openat), pembacaan bit data (read), pengiriman ke konsol (write), hingga penutupan deskriptor (close).
⚙️ [Parameter Pendukung yang Sering Digunakan]

-c : Menyajikan rekapitulasi statistik komprehensif, mencakup frekuensi eksekusi, total durasi pemrosesan, dan kalkulasi galat dari setiap panggilan sistem.
-e : Menyaring pemantauan agar hanya menampilkan panggilan sistem atau kategori peristiwa tertentu.
-o : Mengarahkan rekaman inspeksi langsung ke berkas log eksternal alih-alih membanjiri layar terminal.
-p : Mengaitkan inspeksi ke proses aktif yang sedang berjalan menggunakan identifikasi PID tertentu.
-T : Menampilkan informasi presisi mengenai durasi waktu yang dihabiskan untuk menyelesaikan masing-masing panggilan sistem.
-tt : Menyertakan penanda waktu mikrodetik pada setiap baris pencatatan instruksi.
-s : Mengatur batas panjang karakter maksimal (dalam satuan bita) saat menampilkan nilai argumen bertipe string.

Menjalankan pelacakan dasar strace pada utilitas cat

Menyaring Panggilan Sistem Spesifik dengan Argumen -e trace

Instruksi strace -e trace=openat,read,write,close cat /tmp/testfile.txt berfungsi mengisolasi inspeksi agar terminal hanya memunculkan panggilan sistem openat, read, write, dan close.
Teknik penyaringan berbasis pemisahan koma ini sangat efektif memangkas keluaran data yang berlebih, sehingga Anda dapat berfokus membedah alur I/O berkas tanpa terdistraksi aktivitas rutin lainnya.

Memfilter panggilan sistem I/O berkas

Selain menyebutkan nama panggilan secara manual, perintah strace -e trace=file ls -l /tmp/testfile.txt memanfaatkan kelas penyaring bawaan file untuk menangkap seluruh operasi yang berinteraksi dengan sistem berkas.
Langkah ini secara otomatis mencakup pengecekan hak akses, resolusi path, pencarian atribut berkas, serta operasi direktori terkait tanpa perlu mendefinisikan masing-masing fungsi secara terpisah.

Menggunakan kelas filter file pada strace

Analisis Statistik dan Deteksi Hambatan Performa (-c)

Perintah strace -c ls -la /usr/bin > /dev/null dipakai untuk mengukur metrik kerja saat sistem menelusuri isi direktori padat seperti /usr/bin.
Dengan membuang keluaran standar ke /dev/null, Anda akan memperoleh tabel ringkasan terstruktur saat perintah usai yang menguraikan proporsi alokasi waktu, durasi total, akumulasi pemanggilan, hingga indikasi kegagalan sistem call.

Menampilkan profil performa sistem call direktori

Pengujian efisiensi juga dapat diterapkan pada operasi pencarian teks, misalnya melalui strace -c grep -rn 'root' /etc/passwd > /dev/null.
Teknik ini membantu administrator melacak komponen sistem yang menjadi titik sumbatan (bottleneck) beban kerja—seperti lamanya penanganan pembacaan berkas—sehingga perbaikan kinerja sistem dapat diprioritaskan secara akurat.

Mengidentifikasi latensi pencarian kata kunci dengan opsi statistik

Mengaitkan Pelacakan ke Proses Berjalan dan Ekspor Log (-p, -o)

Untuk menyimulasikan analisis proses dinamis yang berjalan di latar belakang (background), jalankan perintah sleep 100 &.

Menjalankan proses latar belakang

Simpan nomor identifikasi unik proses yang baru saja dibuat ke dalam variabel shell melalui TARGET_PID=$!.

Menyimpan PID proses ke variabel lingkungan

Eksekusi strace -p $TARGET_PID -o /tmp/strace_output.log -t & akan segera menautkan tracer ke proses aktif tersebut, memproses pengamatan di latar belakang, dan membubuhkan stempel waktu detik ke dalam berkas penyimpanan log /tmp/strace_output.log.
Pendekatan ini sangat aman digunakan pada peladen produksi karena tidak mengunci terminal interaktif dan memberikan arsip log yang siap dibedah saat proses audit.

Memantau PID tertentu dan mengalirkan hasil ke berkas log

Beri jeda sejenak menggunakan perintah sleep 1 guna memastikan antarmuka strace berhasil menempel sempurna pada alur target.

Menunggu proses pelacakan stabil

Setelah data pemantauan dirasa mencukupi, matikan proses pengujian latar belakang menggunakan perintah kill $TARGET_PID.

Menghentikan proses uji

Untuk menelaah rekaman yang berhasil dihimpun, buka baris awal berkas penampung lewat perintah head -n 20 /tmp/strace_output.log.
Dari catatan tersebut, Anda dapat mengonfirmasi urutan sistem call secara transparan, termasuk momen ketika sinyal terminasi SIGTERM diterima hingga proses benar-benar dibersihkan oleh sistem operasi.

Memeriksa isi log hasil pelacakan latar belakang

Kemampuan menelusuri lapisan terdalam Linux menggunakan strace memberikan keunggulan teknis yang nyata dalam mendiagnosis keanehan sistem.
Tatkala Anda berhadapan dengan freeze, konsumsi CPU yang tidak wajar, atau galat tanpa pesan yang jelas, gunakan utilitas ini untuk mengidentifikasi perilaku internal kernel secara cepat dan tuntas.