Perintah Linux

Cara Menggunakan Strace Pada Linux

Cara Menggunakan Strace Pada Linux
Semasa bekerja dengan sistem Linux, anda sering perlu memeriksa dan memahami tindakan yang dilakukan oleh proses dan panggilan sistem yang dilakukan oleh pelaksanaannya.

Ketika melakukan tugas seperti itu, kernel Linux menyediakan fitur seperti ptrace untuk menyahpepijat dan mendiagnosis proses.

Artikel ini membincangkan cara menggunakan alat pelindung untuk mengesan, memantau, dan proses debug yang berinteraksi dengan Kernel.

Apakah Panggilan Sistem?

Sebelum kita membincangkan cara menggunakan strace, anda perlu memahami apa yang kita cari dan bagaimana ia berfungsi. Ini bermaksud kita harus membahas asas-asas panggilan Sistem Linux.

Panggilan sistem adalah kaedah terprogram di mana program dapat meminta perkhidmatan dari Kernel sistem. Itulah proses yang akan kita gunakan untuk memeriksa tindakan antara proses pengguna dan kernel Linux.

Bila-bila masa pengguna melaksanakan program yang membuat membaca, menulis, membunuh, keluar, mengikat, dll., permintaan, mereka membuat panggilan sistem. Terdapat pelbagai panggilan sistem yang digunakan oleh program untuk melakukan pelbagai tugas seperti rangkaian, membaca dan menulis ke fail, memulakan dan menghentikan proses, dan banyak lagi.

Fikirkan panggilan sistem sebagai fungsi-mereka berkelakuan serupa-kerana mereka dapat menerima hujah dan mengembalikan nilai. Perbezaan utama antara panggilan sistem dan operasi normal adalah bahawa panggilan sistem dapat berinteraksi secara langsung dengan Kernel. Panggilan sistem menggunakan a mekanisme perangkap untuk menavigasi antara ruang pengguna dan Kernel.

Dalam sistem Linux, mekanisme ini tersembunyi dengan baik oleh pengguna oleh perpustakaan seperti Glibc.

NOTA: Terdapat banyak lagi panggilan sistem dan interaksi kernel daripada apa yang telah kita bincangkan dalam tutorial ini. Sila rujuk halaman manual untuk maklumat lebih lanjut.

https: // linkfy.ke / syscall

https: // linkfy.ke / trapmanual

Cara Memasang Strace di Linux

Walaupun alat pelindung tidak diprapasang secara lalai dalam pengedaran Linux utama, alat ini tersedia di kebanyakan repositori rasmi pengedaran ini; anda boleh memasangnya dengan mudah menggunakan pengurus pakej lalai.

NOTA: Walaupun kami tidak akan merangkumi cara memasang strace pada semua sistem, kami akan membincangkan cara melakukannya dengan pengurus pakej utama seperti apt, dnf, pacman, dan yum

1: Pemasangan Debian (apt)

Pasang tali menggunakan arahan:

apt-get install strace -y

2: Keluarga RedHat (dnf dan yum)

Untuk memasang strace menggunakan pengurus paket yum, masukkan arahan:

yum pasangkan strace

Untuk pengurus pakej dnf, masukkan arahan:

dnf memasang strace

3: Arch Linux (Pacman)

Untuk pengguna Arch Linux, anda boleh memasang strace dengan arahan:

pacman -S strace

Setelah anda memasang dan menjalankan strace, kami dapat meneruskan dan mempelajari cara menggunakannya

Penggunaan Strace Asas: Panduan Cara

Mari kita bincangkan penggunaan tali asas dan fahami output asas arahan dan bagaimana kita dapat menggunakannya.

NOTA: Output rentetan seperti nama panggilan sistem, argumen yang sesuai, dan nilai kembali dikendalikan deskriptor fail ralat standard (stderr).

Cara asas untuk menggunakan strace adalah dengan memanggil utiliti strace diikuti dengan nama program, tingkah laku yang ingin kita fahami.

Berikut adalah contoh yang menggunakan arahan ls:

Wah! Itu adalah banyak output untuk perintah mudah seperti ls.

Walaupun kita tidak dapat membincangkan semua output dari arahan strace, kita dapat menyaring dan memahami maknanya.

Sekiranya anda mempertimbangkan baris pertama dalam output di atas, anda akan melihat ciri-ciri berikut.

Oleh itu, pada baris pertama, panggilan sistem dijalankan (jalankan program menggunakan array argumen yang ditentukan), argumen panggilan sistem adalah ("/ bin / ls", ["ls", "/"], 0x7fffc4b277a8 / * 13 vars * /) dan nilai pulangan 0.

https: // linkfy.untuk / melaksanakan

Panggilan sistem execve melaksanakan binary yang ingin kita gunakan, dalam kes ini, terletak di (/ bin / ls) dan array argumen menjadi jalan yang ingin kita senaraikan kandungan.

Anda juga akan melihat notasi yang dilampirkan dengan garis miring dan tanda bintang. Contohnya:

/ * 13 vars * /

Output di atas menunjukkan bilangan pemboleh ubah yang ditambahkan sebagai hasil dari proses memanggil. Lingkungan di dalam fungsi execv diakses dengan menggunakan pemboleh ubah luaran lingkungan yang didefinisikan sebagai:

int utama (int argc, char * argv [], char * envp [])

Hasil akhir adalah nilai pengembalian, iaitu 0 dalam kes ini.

Anda juga akan melihat bahawa kebanyakan garis output strace mengikuti corak serupa yang kita bincangkan di atas.

Cara Mengesan panggilan Sistem Tertentu

Walaupun strace memberikan banyak maklumat mengenai panggilan sistem program, kebanyakan contoh akan meminta anda untuk menyaring panggilan sistem tertentu. Untuk melakukan ini, kami meneruskan bendera -e ke perintah strace diikuti dengan nama panggilan sistem yang kami perlukan.

Bagaimana dengan melihat sistem baca memanggil arahan ls. Sebagai contoh:

strace -e membaca ls

Anda akan melihat bahawa ini hanya memaparkan panggilan sistem baca sahaja.

Panggilan sistem baca menerima tiga argumen: deskriptor fail, penyangga, dan jumlah bait. Panggilan sistem kemudian membaca hingga bait kiraan dari argumen deskriptor fail yang dilewatkan ke dalam penyangga.

https: // linkfy.ke / readyscall

Ringkasan Panggilan Sistem

Strace juga membolehkan kita mendapatkan ringkasan panggilan sistem yang dibuat melalui proses. Dengan menyampaikan argumen -c atau -summary-only, kita dapat memperoleh output seperti yang ditunjukkan di bawah:

Perintah menapis dan menyusun output dengan lebih cekap daripada output rentetan biasa. Untuk mendapatkan output ringkasan dan rentetan normal, lengkapkan argumen -C.

Cara Menggunakan Strace Dengan Proses Berjalan

Pada masa lain, anda memerlukan jejak proses yang sedang berjalan. Hingga saat ini, kami hanya menggunakan strace satu perintah. Untuk mengesan proses yang sedang berjalan, kita dapat menggunakan argumen -p diikuti dengan proses Process ID (PID) untuk melampirkan.

Anda boleh mendapatkan PID proses berjalan dengan menggunakan bahagian atas dan grep, ps, htop, pidof, atau alat pemantauan sistem lain.

Sebagai contoh, untuk mendapatkan PID proses apache, kita dapat menggunakan:

ps -ax | grep -i apache2

Itu akan memberi anda PID proses apache2 (PID 3514 dalam hal ini), dan kami dapat menggunakannya untuk melampirkannya ke strace.

Itu mesti menunjukkan output yang serupa dengan yang ditunjukkan di bawah.

Strace akan terus melacak proses yang dilampirkan dan menunjukkan output ketika proses yang dilampirkan melaksanakan panggilan sistem. Untuk menamatkan jejak, tekan CTRL + C, yang melepaskan proses dari rentetan.

Cara Menyimpan Strace Output ke Fail

Kami juga dapat mengarahkan output strace ke fail sebagai argumen. Dengan menggunakan bendera -o diikuti dengan jalur fail sebagai argumen, kita dapat menyimpan log strace.

Sebagai contoh:

strace -p 3514 -o ~ / Desktop / apache_trace

Setelah fail disimpan, anda kemudian dapat memantau dan menganalisanya.

Kesimpulannya

Dalam panduan ini, kami belajar cara memasang dan menggunakan strace pada sebaran Major Linux. Sekarang setelah anda memahami panggilan sistem dan bagaimana proses berfungsi, anda dapat menggunakan strace untuk memantau dan menyahpepijat proses sistem yang sedang berjalan.

Konsep yang dipelajari dalam tutorial ini sangat berguna, terutamanya kerana anda dapat menggunakan apa yang telah anda pelajari untuk memantau jika ada yang mengganggu proses sistem.

HD Remastered Games untuk Linux yang Tidak Pernah Melancarkan Linux Sebelumnya
Banyak pembangun dan penerbit permainan hadir dengan penghapus HD permainan lama untuk memperpanjang usia francais, harap peminat meminta keserasian d...
Cara Menggunakan AutoKey untuk Mengautomasikan Permainan Linux
AutoKey adalah utiliti automasi desktop untuk Linux dan X11, yang diprogramkan dalam Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsi MACRO, ...
Cara Menunjukkan Kaunter FPS dalam Permainan Linux
Permainan Linux mendapat dorongan utama ketika Valve mengumumkan sokongan Linux untuk klien Steam dan permainan mereka pada tahun 2012. Sejak itu, ban...