Cara Menggunakan strace untuk Memantau Panggilan Sistem Linux

Tetingkap terminal bergaya pada PC komputer riba.

fatmawati achmad zaenuri/Shutterstock.com



Program Linux bertanya kepada isirong untuk melakukan beberapa perkara untuk mereka. |_+_| arahan mendedahkan panggilan sistem ini. Anda boleh menggunakannya untuk memahami cara program berfungsi dan mengapa, kadangkala, ia tidak berfungsi.

Panggilan Kernel dan Sistem

Walaupun mereka pintar, program komputer tidak boleh melakukan segala-galanya untuk diri mereka sendiri. Mereka perlu membuat permintaan untuk melaksanakan fungsi tertentu untuk mereka. Permintaan ini pergi ke kernel Linux. Biasanya, terdapat perpustakaan atau antara muka perisian lain yang dipanggil oleh program, dan perpustakaan kemudian membuat permintaan yang sesuai—dipanggil panggilan sistem—ke kernel.





Dapat melihat panggilan sistem yang telah dibuat oleh program dan jawapannya boleh membantu anda memahami cara kerja dalaman program yang menarik minat anda atau yang telah anda tulis. Ini adalah apa |_+_| tidak . Ia boleh membantu menyelesaikan masalah dan mencari kesesakan.

Ini tidak sama dengan menyahpepijat aplikasi dengan alat seperti |__+_| . Program penyahpepijatan membolehkan anda menyiasat operasi dalaman program semasa ia dijalankan. Ia membolehkan anda melangkah melalui logik program anda dan memeriksa memori dan nilai pembolehubah. Sebagai perbandingan, apakah |__+_| adalah menangkap maklumat panggilan sistem semasa program sedang berjalan. Apabila program yang dikesan ditamatkan, |_+_| menyenaraikan maklumat panggilan sistem ke tetingkap terminal.



Panggilan sistem menyediakan semua jenis fungsi peringkat rendah, seperti tindakan baca dan tulis pada fail, proses membunuh dan sebagainya. Terdapat senarai beratus-ratus panggilan sistem pada halaman lelaki syscalls .

BERKAITAN: Penyahpepijatan dengan GDB: Bermula

Memasang strace

Jika |_+_| belum dipasang pada komputer anda, anda boleh memasangnya dengan mudah.



Di Ubuntu, gunakan arahan ini:

strace

Pada Fedora, taip arahan ini:

strace

Di Manjaro, arahannya ialah:

gdb

Langkah Pertama dengan strace

Kami akan menggunakan atur cara kecil untuk menunjukkan |__+_|. Ia tidak banyak membantu: Ia membuka fail dan menulis baris teks padanya, dan ia tidak mempunyai sebarang ralat semasa menyemaknya. Ia hanya godam pantas supaya kita mempunyai sesuatu untuk digunakan dengan |_+_|.

strace

Kami menyimpan ini ke dalam fail yang dipanggil file-io.c dan menyusunnya dengan |__+_| ke dalam boleh laku yang dipanggil |_+_|, dinamakan untuk st bangsa bekas mencukupi.

strace

Kami akan menghubungi |__+_| daripada baris arahan dan hantar nama boleh laku baharu kami kepadanya sebagai proses yang ingin kami jejaki. Kami boleh menjejaki mana-mana arahan Linux atau mana-mana boleh laku binari lain dengan mudah. Kami menggunakan program kecil kami untuk dua sebab.

Sebab pertama ialah |__+_| adalah verbose. Terdapat banyak output. Itu bagus apabila anda menggunakan |_+_| dalam kemarahan, tetapi pada mulanya ia boleh menjadi sangat menggembirakan. Terdapat |__+_| terhad output untuk program kecil kami. Sebab kedua ialah program kami mempunyai fungsi yang terhad, dan kod sumber adalah pendek dan mudah. Ini menjadikannya lebih mudah untuk mengenal pasti bahagian output yang merujuk kepada bahagian berlainan bagi kerja dalaman program.

strace

Kita dapat melihat dengan jelas |__+_| panggilan sistem menghantar teks Tulis ini pada fail ke fail kami yang dibuka dan |_+_| panggilan sistem. Ini menamatkan semua thread dalam aplikasi dan menghantar nilai pulangan kembali ke shell.

Menapis Output

Walaupun dengan program demonstrasi mudah kami, terdapat banyak output. Kita boleh menggunakan |__+_| (ungkapan) pilihan. Kami akan menyampaikan nama panggilan sistem yang ingin kami lihat.

strace

Iklan

Anda boleh melaporkan berbilang panggilan sistem dengan menambahkannya sebagai senarai yang dipisahkan koma. Jangan sertakan sebarang ruang putih dalam senarai panggilan sistem.

strace

Menghantar Output ke Fail

Faedah menapis output juga adalah masalah dengan menapis output. Anda melihat perkara yang anda minta untuk dilihat, tetapi anda tidak melihat apa-apa lagi. Dan beberapa keluaran lain itu mungkin lebih berguna kepada anda daripada bahan yang anda minta untuk dilihat.

Kadangkala, lebih mudah untuk menangkap segala-galanya dan mencari serta menatal keseluruhan set hasil. Dengan cara itu, anda tidak akan mengecualikan perkara penting secara tidak sengaja. |_+_| (output) pilihan membolehkan anda menghantar output daripada |__+_| sesi ke fail teks.

gcc

Anda boleh kemudian gunakan |_+_| perintah untuk menatal melalui penyenaraian dan mencari panggilan sistem—atau apa-apa lagi—dengan nama.

stex

Anda kini boleh menggunakan semua keupayaan carian |_+_|untuk menyiasat output.

BERKAITAN: Cara Menggunakan Perintah yang lebih sedikit pada Linux

Menambah Cap Masa

Anda boleh menambah beberapa cap masa yang berbeza pada output. |_+_| Pilihan (cap masa relatif) menambah cap masa yang menunjukkan perbezaan masa antara permulaan setiap panggilan sistem berturut-turut. Ambil perhatian bahawa nilai masa ini akan termasuk masa yang dibelanjakan dalam panggilan sistem sebelumnya dan apa-apa lagi yang program sedang lakukan sebelum panggilan sistem seterusnya.

strace

Iklan

Cap masa dipaparkan pada permulaan setiap baris output.

Untuk melihat jumlah masa yang dibelanjakan dalam setiap panggilan sistem, gunakan |__+_| (syscall-times) pilihan. Ini menunjukkan tempoh masa yang dihabiskan dalam setiap panggilan sistem.

strace

Tempoh masa ditunjukkan pada penghujung setiap talian panggilan sistem.

Untuk melihat masa setiap panggilan sistem dipanggil, gunakan |_+_| (cap masa mutlak) pilihan. Ini menunjukkan masa jam dinding, dengan resolusi mikrosaat.

strace

Masa dipaparkan pada permulaan setiap baris.

Mengesan Proses Berjalan

Jika proses yang anda ingin kesan sudah berjalan, anda masih boleh melampirkan |_+_| kepadanya. Untuk berbuat demikian, anda perlu mengetahui ID proses. Awak boleh gunakan |_+_| dengan strace untuk mencari ini. Kami menjalankan Firefox. Untuk mengetahui ID |_+_| proses, kita boleh menggunakan |__+_| dan paipkannya melalui |__+_|.

write

Iklan

Kami dapat melihat bahawa ID proses ialah 8483. Kami akan menggunakan |__+_| (ID proses) pilihan untuk memberitahu |__+_| proses mana yang perlu dilampirkan. Ambil perhatian bahawa anda perlu menggunakan |_+_| :

exit_group

Anda akan melihat pemberitahuan bahawa |__+_| telah melampirkan dirinya pada proses, dan kemudian panggilan jejak sistem akan dipaparkan dalam tetingkap terminal seperti biasa.

Membuat Laporan

|_+_| (ringkasan sahaja) pilihan menyebabkan |_+_| untuk mencetak laporan. Ia menjana jadual untuk maklumat tentang panggilan sistem yang dibuat oleh program yang dikesan.

-e

Lajur tersebut ialah:

    % masa: Peratusan masa pelaksanaan yang dibelanjakan dalam setiap panggilan sistem. detik: Jumlah masa yang dinyatakan dalam saat dan mikrosaat yang dibelanjakan dalam setiap panggilan sistem. usecs/call: Purata masa dalam mikrosaat yang dibelanjakan dalam setiap panggilan sistem. panggilan: Bilangan kali setiap panggilan sistem telah dilaksanakan. kesilapan: Bilangan kegagalan untuk setiap panggilan sistem. syscall: Nama panggilan sistem.

Nilai ini akan menunjukkan sifar untuk program remeh yang dilaksanakan dan ditamatkan dengan cepat. Nilai dunia sebenar ditunjukkan untuk program yang melakukan sesuatu yang lebih bermakna daripada aplikasi demonstrasi kami.

Cerapan Mendalam, Dengan Mudah

|_+_| output boleh menunjukkan kepada anda panggilan sistem yang sedang dibuat, yang mana yang dibuat berulang kali, dan berapa banyak masa pelaksanaan yang dibelanjakan di dalam kod sisi kernel. Itu maklumat yang bagus. Selalunya, apabila anda cuba memahami perkara yang berlaku di dalam kod anda, mudah untuk dilupakan bahawa binari anda berinteraksi hampir tanpa henti dengan kernel untuk melaksanakan banyak fungsinya.

Dengan menggunakan |_+_|, anda melihat gambar yang lengkap.

Perintah Linux
Fail tar · pv · kucing · tac · chmod · cengkaman · perbezaan · sed · Dengan · lelaki · pushd · popd · fsck · testdisk · seq · fd · pandoc · CD · $PATH · awk · sertai · jq · lipat · uniq · journalctl · ekor · negeri · ls · fstab · dibuang · kurang · chgrp · chown · rev · tengok · rentetan · taip · menamakan semula · zip · buka zip · lekapkan · umount · pasang · fdisk · mkfs · rm · rmdir · rsync · df · gpg · kita · nano · mkdir · daripada · ln · tampalan · menukar · rclone · carik-carik · SRM
Proses alias · skrin · atas · bagus · renice · kemajuan · jejak · sistem · tmux · chsh · sejarah · di · kumpulan · percuma · yang · dmesg · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · masa tamat · dinding · ya · bunuh · tidur · sudo · miliknya · masa · tambah kumpulan · usermod · kumpulan · lshw · menutup · but semula · berhenti · matikan · passwd · lscpu · crontab · Tarikh · bg · fg
Rangkaian netstat · ping · traceroute · ip · ss · siapakah · fail2ban · bmon · awak · jari · nmap · ftp · keriting · wget · who · siapakah saya · Dalam · iptables · ssh-keygen · ufw

BERKAITAN: Komputer Riba Linux Terbaik untuk Pembangun dan Penggemar

BACA SETERUSNYA
  • › Cara Mencari Spotify Anda Dibungkus 2021
  • & rsaquo; Cyber ​​Monday 2021: Tawaran Teknologi Terbaik
  • › 5 Laman Web Setiap Pengguna Linux Perlu Penanda Halaman
  • › Folder Komputer Berusia 40: Bagaimana Bintang Xerox Mencipta Desktop
  • › Fungsi vs. Formula dalam Microsoft Excel: Apakah Perbezaannya?
  • › Apakah itu MIL-SPEC Drop Protection?
Foto Profil untuk Dave McKay Dave McKay
Dave McKay pertama kali menggunakan komputer apabila pita kertas yang ditebuk sedang popular, dan dia telah memprogramkan sejak itu. Selepas lebih 30 tahun dalam industri IT, beliau kini seorang wartawan teknologi sepenuh masa. Semasa kerjayanya, beliau telah bekerja sebagai pengaturcara bebas, pengurus pasukan pembangunan perisian antarabangsa, pengurus projek perkhidmatan IT, dan, yang terbaru, sebagai Pegawai Perlindungan Data. Tulisannya telah diterbitkan oleh howtogeek.com, cloudsavvyit.com, itenterpriser.com, dan opensource.com. Dave ialah seorang penginjil Linux dan penyokong sumber terbuka.
Baca Bio Penuh

Artikel Yang Menarik