Cara Gunakan strace untuk Sistem Monitor Linux Panggilan

Jun 23, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

Program Linux Tanyakan inti untuk melakukan beberapa hal untuk mereka. NS Strace. Perintah mengungkapkan panggilan sistem ini. Anda dapat menggunakannya untuk memahami bagaimana program bekerja dan mengapa, kadang-kadang, mereka tidak.

Panggilan kernel dan sistem

Sekerdas mungkin, program komputer tidak dapat melakukan segalanya untuk diri mereka sendiri. Mereka perlu membuat permintaan untuk memiliki fungsi tertentu yang dilakukan untuk mereka. Permintaan ini pergi ke kernel Linux. Biasanya, ada perpustakaan atau antarmuka perangkat lunak lain yang dipanggil program, dan perpustakaan kemudian membuat permintaan yang sesuai - disebut sistem panggilan ke kernel.

Mampu melihat sistem memanggil bahwa suatu program telah membuat dan apa tanggapan dapat membantu Anda memahami cara kerja dalam program yang menarik bagi Anda atau yang telah Anda tulis. Ini adalah Apa Strace. melakukan . Ini dapat membantu memecahkan masalah dan mencari kemacetan.

Ini tidak sama dengan debugging aplikasi dengan alat seperti gdb. . Program debugging memungkinkan Anda menyelidiki operasi internal suatu program saat berjalan. Ini memungkinkan Anda melangkah melalui logika program Anda dan memeriksa memori dan nilai variabel. Sebagai perbandingan, apa Strace. Apakah menangkap informasi sistem panggilan karena program berjalan. Ketika program yang ditelusuri berakhir, Strace. Daftar informasi panggilan sistem ke jendela terminal.

Panggilan sistem menyediakan segala macam fungsi tingkat rendah, seperti membaca dan menulis tindakan pada file, mematikan proses, dan sebagainya. Ada daftar ratusan panggilan sistem pada Syscalls Man Halaman .

TERKAIT: Debugging dengan GDB: Memulai

Menginstal Strace.

Jika Strace. belum diinstal pada komputer Anda, Anda dapat menginstalnya dengan sangat mudah.

Di Ubuntu, gunakan perintah ini:

 sudo apt install strace 

Pada Fedora, ketik perintah ini:

 sudo dnf instal strace 

Di Manjaro, perintahnya adalah:

 Sudo Pacman -sy Strace 

Langkah pertama dengan strace

Kami akan menggunakan program kecil untuk diperagakan Strace. . Itu tidak banyak: itu membuka file dan menulis garis teks untuk itu, dan itu tidak memiliki kesalahan yang memeriksa di dalamnya. Itu hanya peretasan cepat sehingga kita memiliki sesuatu untuk digunakan Strace. .

 #include & lt; stdio.h & gt;

int utama (int argc, char argv []) {

  // Handle File.
  File * FileGeek;

  // buka file yang disebut "strace_demo.txt", atau buat itu
  filegeek = fopen ("strace_demo.txt", "W");

  // Tulis beberapa teks ke file
  fprintf (filegeek, "tulis ini ke file");

  // tutup file
  FCLOSE (FileGEEK);

  // Keluar dari program
  kembali (0);

} // akhir utama 

Kami menyimpan ini ke dalam file yang disebut "File-io.c" dan dikompilasi dengan gcc menjadi eksekusi yang disebut Stex. , dinamai untuk " NS balapan mantan cukup."

 gcc -o stex file-io.c 

Kami akan menelepon Strace. Dari baris perintah dan sampaikan nama yang dapat dieksekusi baru untuk itu sebagai proses yang ingin kami lacak. Kita bisa dengan mudah melacak salah satu perintah Linux atau eksekusi biner lainnya. Kami menggunakan program kecil kami karena dua alasan.

Alasan pertama adalah itu Strace. adalah verbose. Mungkin ada banyak output. Itu bagus ketika Anda menggunakan Strace. Dalam kemarahan, tetapi bisa berlebihan pada awalnya. Ada Limited. Strace. output untuk program kecil kami. Alasan kedua adalah bahwa program kami memiliki fungsi terbatas, dan kode sumber pendek dan langsung. Ini membuatnya lebih mudah untuk mengidentifikasi bagian mana dari output mengacu pada bagian yang berbeda dari kerja internal program.

 Strace ./stex

Kita dapat dengan jelas melihat menulis panggilan sistem mengirim teks "tulis ini ke file" ke file yang kami buka dan Exit_Group. panggilan sistem. Ini mengakhiri semua utas dalam aplikasi dan mengirimkan nilai kembali kembali ke shell.

Memfilter hasilnya

Bahkan dengan program demonstrasi sederhana kami, ada cukup banyak output. Kita bisa menggunakan -e. Opsi (ekspresi). Kami akan meneruskan nama panggilan sistem yang ingin kami lihat.

 Strace -e menulis ./stex

Anda dapat melaporkan beberapa panggilan sistem dengan menambahkannya sebagai daftar yang dipisahkan koma. Jangan memasukkan spasi putih dalam daftar panggilan sistem.

 Strace -e tutup, tulis ./stex

Mengirim output ke file

Manfaat memfilter hasil juga merupakan masalah dengan memfilter output. Anda melihat apa yang Anda minta untuk dilihat, tetapi Anda tidak melihat hal lain. Dan beberapa output lain mungkin lebih bermanfaat bagi Anda daripada hal-hal yang Anda minta untuk dilihat.

Kadang-kadang, lebih mudah untuk menangkap segalanya dan mencari dan menggulir seluruh hambatan hasil. Dengan begitu, Anda tidak akan sengaja mengecualikan sesuatu yang penting. NS -Hai Opsi (output) memungkinkan Anda mengirim output dari a Strace. sesi ke file teks.

 Strace -o Trace-output.txt ./stex

Anda bisa melakukannya menggunakan lebih sedikit memerintah Untuk menggulir daftar dan mencari panggilan sistem - atau apa pun dengan nama.

 lebih sedikit trace-output.txt 

Anda sekarang dapat menggunakan semuanya lebih sedikit Kemampuan pencarian untuk menyelidiki output.

TERKAIT: Cara menggunakan perintah yang lebih sedikit di Linux

Menambahkan Timestamps

Anda dapat menambahkan beberapa cap waktu berbeda ke output. NS -R Opsi (TimesTamps Relative) Menambahkan cap waktu yang menunjukkan perbedaan waktu antara awal setiap panggilan sistem berturut-turut. Perhatikan bahwa nilai waktu ini akan mencakup waktu yang dihabiskan dalam panggilan sistem sebelumnya dan apa pun yang dilakukan oleh program sebelum panggilan sistem berikutnya.

 Strace -r ./stex

Stempel waktu ditampilkan pada awal setiap baris output.

Untuk melihat jumlah waktu yang dihabiskan di setiap panggilan sistem, gunakan -T Opsi (SSCLALL-Times). Ini menunjukkan durasi waktu yang dihabiskan di dalam setiap panggilan sistem.

 Strace -t ./stex

Waktu durasi ditampilkan pada akhir setiap baris panggilan sistem.

Untuk melihat waktu di mana setiap panggilan sistem dipanggil, gunakan -tt. Opsi (Timestamps Absolute). Ini menunjukkan waktu "jam dinding", dengan resolusi mikrodetik.

 Strace -tt ./stex

Waktu ditampilkan pada awal setiap baris.

Menelusuri proses yang berjalan

Jika proses yang ingin Anda jejak sudah berjalan, Anda masih bisa melampirkan Strace. untuk itu. Untuk melakukannya, Anda perlu mengetahui ID proses. Kamu bisa menggunakan ps. dengan Grep. untuk menemukan ini. Kami memiliki Firefox. Untuk mengetahui ID dari Firefox. proses, kita dapat menggunakan ps. dan Pipe melalui Grep. .

 PS -E | grep firefox 

Kita dapat melihat bahwa ID proses adalah 8483. Kami akan menggunakan -P (ID Proses) Opsi untuk memberi tahu Strace. proses mana yang akan dilampirkan. Perhatikan bahwa Anda harus menggunakannya Sudo :

 sudo strace -p 8483 

Anda akan melihat pemberitahuan itu Strace. telah melekat pada proses, dan kemudian panggilan jejak sistem akan ditampilkan di jendela terminal seperti biasa.

Membuat laporan

NS -C (Hanya Ringkasan) Penyebab Opsi Strace. untuk mencetak laporan. Ini menghasilkan tabel untuk informasi tentang panggilan sistem yang dibuat oleh program yang ditelusuri.

 Strace -C ./stex

Kolomnya adalah:

  • % waktu : Persentase waktu eksekusi yang dihabiskan di setiap panggilan sistem.
  • detik. : Total waktu yang diungkapkan dalam detik dan mikrodetik yang dihabiskan di setiap panggilan sistem.
  • USECS / Panggilan : Waktu rata-rata dalam mikrodetik dihabiskan di setiap panggilan sistem.
  • Panggilan : Berapa kali setiap panggilan sistem dieksekusi.
  • Kesalahan : Jumlah kegagalan untuk setiap panggilan sistem.
  • syscall. : Nama panggilan sistem.

Nilai-nilai ini akan menunjukkan nol untuk program sepele yang melaksanakan dan mengakhiri dengan cepat. Nilai-nilai dunia nyata ditampilkan untuk program yang melakukan sesuatu yang lebih bermakna daripada aplikasi demonstrasi kami.

Wawasan mendalam, mudah

NS Strace. Output dapat menunjukkan kepada Anda panggilan sistem mana yang dibuat, yang mana yang sedang dilakukan berulang kali, dan berapa banyak waktu eksekusi yang dihabiskan di dalam kode sisi kernel. Itu informasi hebat. Seringkali, ketika Anda mencoba memahami apa yang terjadi di dalam kode Anda, mudah untuk melupakan bahwa biner Anda berinteraksi hampir tanpa henti dengan kernel untuk melakukan banyak fungsinya.

Dengan menggunakan Strace. , Anda melihat gambar lengkapnya.


Linux - Artikel Terpopuler

Cara memaksa pengguna untuk mengubah kata sandi mereka di Linux

Linux Nov 4, 2024

Ilya Titchev / Shutterstock Kata sandi adalah batu kunci ke keamanan akun. Kami akan menunjukkan kepada Anda cara mengatur ulang kata sandi, mengatur periode k..


Cara Mengelola Linux Server dengan Cockpit Web Interface

Linux Dec 9, 2024

Fatmawati Achmad Zaenuri / Shutterstock Anda dapat dengan mudah memantau dan mengelola beberapa komputer Linux dengan kokpit, administrasi berbasis browser dan..


Cara Sembunyikan Semua Desktop Ikon pada Mac

Linux Jun 23, 2025

Krisda / Shutterstock. Apakah desktop Mac Anda berantakan? Tidak benar-benar ingin mengatur semuanya? Jangan khawatir, Anda dapat menggunakan perintah terminal..


6 distro Linux ringan terbaik

Linux Jul 27, 2025

3DMI / Shutterstock.com Jika komputer Windows atau Mac Anda sudah tua dan berjuang untuk mengikuti, menginstal Linux dapat memberikan sewa seumur hidup yang se..


Cara mengkonfigurasi atau menonaktifkan pemberitahuan pembaruan Linux Mint

Linux Jul 9, 2025

Sudah cukup pemberitahuan pembaruan Mint Linux? Atau mungkin Anda sangat khawatir dengan tetap mutakhir, Anda ingin melihatnya lebih? Either way, menyesuaikan notifikasi atau mematikannya ..


Cara Menggunakan fsck Command pada Linux

Linux Aug 18, 2025

Pixza Studio / Shutterstock Semua data penting kami berada dalam sistem file satu jenis atau yang lain, dan masalah sistem file pasti akan terjadi. Di Linux, k..


Can Anda Install Linux pada M1 Apel Silicon Mac?

Linux Nov 12, 2024

Tidak semua orang membeli Mac untuk hanya menjalankan MacOS. Berita buruknya adalah bahwa pada November 2021, dukungan Linux asli pada silikon apel belum mungkin. Namun, kemajuan sedang ..


Cara Install Linux pada M1 Mac Dengan Apel Silicon

Linux Nov 11, 2024

Dukungan Linux asli untuk arsitektur berbasis lengan Apple belum siap, tetapi Anda dapat menjalankan Linux pada M1. , M1 Pro, atau M1 Max menggunakan a mesin virtual ..


Kategori