Perintah Linux

Cara Menggunakan Strace Di Linux

Cara Menggunakan Strace Di Linux
Saat bekerja dengan sistem Linux, Anda sering kali perlu memeriksa dan memahami tindakan yang dilakukan oleh proses dan panggilan sistem yang dilakukan oleh eksekusinya.

Ketika datang untuk melakukan tugas-tugas seperti itu, kernel Linux menyediakan fitur-fitur seperti: praktek untuk men-debug dan mendiagnosis proses.

Artikel ini membahas cara menggunakan alat strace untuk melacak, memantau, dan men-debug proses yang berinteraksi dengan Kernel.

Apa itu Panggilan Sistem??

Sebelum kita membahas cara menggunakan strace, Anda perlu memahami apa yang kami cari dan cara kerjanya. Itu berarti kita harus membahas dasar-dasar panggilan Sistem Linux.

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

Setiap kali pengguna menjalankan program yang membuat membaca, menulis, membunuh, keluar, mengikat, dll., permintaan, mereka membuat panggilan sistem. Ada berbagai macam panggilan sistem yang digunakan oleh program untuk melakukan berbagai tugas seperti jaringan, membaca dan menulis ke file, menginisialisasi dan mengakhiri proses, dan banyak lagi.

Pikirkan panggilan sistem sebagai fungsi-mereka berperilaku serupa-karena mereka dapat menerima argumen dan mengembalikan nilai. Perbedaan utama antara panggilan sistem dan operasi normal adalah bahwa panggilan sistem dapat langsung berinteraksi dengan Kernel. Panggilan sistem menggunakan a mekanisme perangkap untuk menavigasi antara ruang pengguna dan Kernel.

Dalam sistem Linux, mekanisme ini sangat tersembunyi dari pengguna oleh perpustakaan seperti Glibc.

CATATAN: Ada lebih banyak panggilan sistem dan interaksi kernel daripada yang telah kita diskusikan dalam tutorial ini. Silakan merujuk ke halaman manual untuk informasi lebih lanjut.

https://linkfy.ke/syscall

https://linkfy.ke/trapmanual

Cara Menginstal strace di Linux

Meskipun alat strace tidak diinstal sebelumnya secara default di distribusi Linux utama, ini tersedia di sebagian besar repositori resmi dari distribusi ini; Anda dapat menginstalnya dengan mudah menggunakan manajer paket default.

CATATAN: Meskipun kita tidak akan membahas cara menginstal strace di semua sistem, kita akan membahas cara melakukannya dengan manajer paket utama seperti apt, dnf, pacman, dan yum

1: Instalasi Debian (apt)

Instal strace menggunakan perintah:

apt-get install strace -y

2: Keluarga RedHat (dnf dan yum)

Untuk menginstal strace menggunakan yum package manager, masukkan perintah:

yum instal strace

Untuk pengelola paket dnf, masukkan perintah:

dnf instal strace

3: Arch Linux (pacman)

Untuk pengguna Arch Linux, Anda dapat menginstal strace dengan perintah:

pacman -S strace

Sekarang setelah Anda menginstal dan menjalankan strace, kita dapat melanjutkan dan mempelajari cara menggunakannya

Penggunaan Strace Dasar: Panduan Cara

Mari kita bahas penggunaan strace dasar dan memahami output dasar dari perintah dan bagaimana kita dapat menggunakannya.

CATATAN: Keluaran strace seperti nama panggilan sistem, argumen yang sesuai, dan nilai kembalian ditangani oleh deskriptor file kesalahan standar (stderr).

Cara dasar untuk menggunakan strace adalah dengan memanggil utilitas strace diikuti dengan nama program, yang perilakunya ingin kita pahami.

Berikut ini contohnya menggunakan perintah ls:

Wow! Itu banyak output untuk perintah sederhana seperti ls.

Meskipun kita tidak dapat membahas semua output dari perintah strace, kita dapat menyaring dan memahami artinya its.

Jika Anda mempertimbangkan baris pertama dalam output di atas, Anda akan melihat fitur berikut:.

Oleh karena itu, pada baris pertama, panggilan sistem adalah execve (eksekusi program menggunakan array argumen yang ditentukan), argumen dari panggilan sistem adalah (“/bin/ls”, [“ls”, “/”], 0x7fffc4b277a8 / * 13 vars */) dan nilai balik 0.

https://linkfy.ke/eksekusi

Panggilan sistem eksekutif mengeksekusi biner yang ingin kita gunakan, dalam hal ini, terletak di (/bin/ls) dan array argumen menjadi jalur yang ingin kita daftarkan isinya.

Anda juga akan melihat notasi yang diapit dengan garis miring dan tanda bintang. Untuk contoh kita:

/* 13 var */

Output di atas menunjukkan jumlah variabel yang ditambahkan sebagai hasil dari pemanggilan proses. Lingkungan di dalam fungsi execv diakses dengan menggunakan variabel eksternal lingkungan yang didefinisikan sebagai:

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

Output akhir adalah nilai balik, yaitu 0 dalam hal ini.

Anda juga akan melihat bahwa sebagian besar baris dari output strace mengikuti pola serupa yang telah kita bahas di atas.

Cara Melacak panggilan Sistem Tertentu

Meskipun strace memberikan banyak informasi mengenai panggilan sistem program, sebagian besar instance akan memanggil Anda untuk memfilter panggilan sistem tertentu. Untuk melakukan ini, kami meneruskan flag -e ke perintah strace diikuti dengan nama panggilan sistem yang kami butuhkan.

Bagaimana dengan melihat panggilan sistem baca untuk perintah ls?. Sebagai contoh:

strace -e baca ls

Anda akan melihat bahwa ini hanya menampilkan panggilan sistem baca saja.

Panggilan sistem baca menerima tiga argumen: deskriptor file, buffer, dan jumlah byte. Panggilan sistem kemudian membaca hingga hitungan byte dari argumen deskriptor file yang diteruskan ke dalam buffer.

https://linkfy.ke/readsyscall

Ringkasan Panggilan Sistem

Strace juga memungkinkan kita untuk mendapatkan ringkasan panggilan sistem yang dibuat oleh suatu proses. Dengan melewatkan argumen -c atau -summary-only, kita bisa mendapatkan output seperti yang ditunjukkan di bawah ini:

Perintah menyaring dan mengatur output lebih efisien daripada output strace normal. Untuk mendapatkan ringkasan dan output strace normal, berikan argumen -C.

Cara Menggunakan Strace Dengan Proses yang Berjalan

Di lain waktu, Anda akan membutuhkan jejak proses yang sedang berjalan. Sampai saat ini, kami hanya menggunakan satu perintah strace. Untuk melacak proses yang sedang berjalan, kita dapat menggunakan argumen -p diikuti oleh proses ID Proses (PID) untuk melampirkan strace padanya.

Anda bisa mendapatkan PID dari proses yang sedang berjalan dengan menggunakan top dan grep, ps, htop, pidof, atau alat pemantauan sistem lainnya.

Misalnya, untuk mendapatkan PID dari proses apache, kita dapat menggunakan:

ps -kapak | grep -i apache2

Itu akan memberi Anda PID dari proses Apache2 (PID 3514 dalam kasus ini), dan kami dapat menggunakannya untuk melampirkannya ke strace.

Itu akan menampilkan output yang mirip dengan yang ditunjukkan di bawah ini.

Strace akan terus melacak proses terlampir dan menunjukkan output saat proses terlampir mengeksekusi panggilan sistem. Untuk menghentikan jejak, tekan CTRL + C, yang memisahkan proses dari strace.

Cara Menyimpan Output Strace ke File

Kami juga dapat mengarahkan output strace ke file sebagai argumen. Menggunakan flag -o diikuti oleh jalur file sebagai argumen, kita dapat menyimpan log strace.

Sebagai contoh:

strace -p 3514 -o ~/Desktop/Apache_trace

Setelah file disimpan, Anda dapat memantau dan menganalisisnya nanti.

Kesimpulan

Dalam panduan ini, kami belajar cara menginstal dan menggunakan strace pada distribusi Linux Utama. Sekarang setelah Anda memahami panggilan sistem dan cara kerja proses, Anda dapat menggunakan strace untuk memantau dan men-debug proses sistem yang sedang berjalan.

Konsep yang dipelajari dalam tutorial ini sangat berguna, terutama karena Anda dapat menggunakan apa yang telah Anda pelajari untuk memantau jika ada yang merusak proses sistem.

Cara Menggunakan Cheat Engine GameConqueror di Linux
Artikel ini mencakup panduan tentang menggunakan mesin cheat GameConqueror di Linux. Banyak pengguna yang bermain game di Windows sering menggunakan a...
Emulator Konsol Game Terbaik untuk Linux
Artikel ini akan mencantumkan perangkat lunak emulasi konsol game populer yang tersedia untuk Linux. Emulasi adalah lapisan kompatibilitas perangkat l...
Distro Linux Terbaik untuk Gaming pada tahun 2021
Sistem operasi Linux telah berkembang jauh dari tampilan aslinya, sederhana, berbasis server. OS ini telah sangat meningkat dalam beberapa tahun terak...