GNU/Linux >> Belajar Linux >  >> Linux

Cara menggunakan perintah strace dan ltrace di Linux

Perintah strace

Perintah strace dapat digunakan untuk mencegat dan merekam panggilan sistem yang dibuat, dan sinyal yang diterima oleh suatu proses. Hal ini memungkinkan pemeriksaan lapisan batas antara pengguna dan ruang kernel yang dapat sangat berguna untuk mengidentifikasi mengapa suatu proses gagal.

Menggunakan strace untuk menganalisis bagaimana program berinteraksi dengan sistem sangat berguna ketika kode sumber tidak tersedia. Selain
pentingnya dalam pemecahan masalah, strace dapat memberikan wawasan mendalam tentang cara sistem beroperasi. Setiap pengguna dapat melacak proses mereka sendiri yang sedang berjalan; selain itu, pengguna root dapat melacak proses yang sedang berjalan. Misalnya, berikut ini dapat digunakan untuk melampirkan dan melacak daemon rsyslogd yang sedang berjalan:

# strace -p $(pgrep rsyslogd)
Process 819 attached
select(1, NULL, NULL, NULL, {83009, 275934}
...

keluaran strace

Output dari strace akan sesuai dengan panggilan sistem atau sinyal. Keluaran dari panggilan sistem terdiri dari tiga komponen:
1. Panggilan sistem
2. Argumen apa pun yang dikelilingi oleh tanda kurung
3. Hasil panggilan mengikuti tanda sama dengan

Status keluar -1 biasanya menunjukkan kesalahan. Misalnya:

# strace ls file1
execve("/bin/ls", ["ls", "file1"], [/* 21 vars */]) = 0
brk(0)                                  = 0xadb000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f516bb79000
.....
close(1)                                = 0
munmap(0x7f516bb78000, 4096)            = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

Kurung kurawal digunakan untuk menunjukkan struktur C dereferensi. Kurung kotak digunakan untuk menunjukkan pointer sederhana atau array nilai.

Contoh perintah strace

Mengalihkan jejak ke file

Karena strace sering membuat output dalam jumlah besar, sering kali lebih mudah untuk mengarahkannya ke file. Misalnya, berikut ini dapat digunakan untuk meluncurkan bash shell, melacak setiap proses turunan bercabang, dan merekam semua akses file ke file files.trace:

# strace -f -o files.trace -e trace=file bash

Menghitung jumlah panggilan sys

Jalankan perintah ls dengan menghitung berapa kali setiap panggilan sistem dilakukan dan cetak total yang menunjukkan jumlah dan waktu yang dihabiskan dalam setiap panggilan (berguna untuk pembuatan profil dasar atau isolasi bottleneck):

# strace -c ls

Melihat file yang dibuka oleh proses/daemon

Contoh berikut menunjukkan tiga file konfigurasi yang dibaca sshd OpenSSH saat dimulai. Perhatikan bahwa strace mengirimkan outputnya ke STDERR secara default, jadi jika Anda ingin menyalurkannya ke perintah lain seperti grep untuk perubahan lebih lanjut, Anda harus mengarahkan output dengan tepat:

# strace -f -eopen /usr/sbin/sshd 2>&1 | grep ssh

Hanya melacak panggilan sistem terkait jaringan

Lacak hanya panggilan sistem terkait jaringan saat Netcat mencoba menyambung ke layanan telnetd lokal:

# strace -e trace=network nc localhost 23

Perintah ltrace

Perintah ltrace dapat digunakan untuk mencegat dan merekam panggilan dinamis yang dilakukan ke pustaka bersama. Jumlah output yang dihasilkan oleh perintah ltrace bisa sangat banyak untuk beberapa perintah (terutama jika opsi -S digunakan untuk juga menampilkan panggilan sistem). Anda dapat memfokuskan output hanya pada interaksi antara program dan beberapa daftar pustaka. Misalnya, untuk menjalankan perintah id -Z dan menampilkan panggilan yang dilakukan ke modul libselinux.so, jalankan:

$ ltrace -l /lib/libselinux.so.1 id -Z
is_selinux_enabled(0xc1c7a0, 0x9f291e8, 0xc1affc, 0, -1)a
       =1	
getcon(0x804c2c8, 0xfee80ff4, 0x804b179, 0x804c020, 0)a
       =0
user_u:system_r:unconfined_t

Ingatlah bahwa Anda dapat melihat pustaka apa yang ditautkan dengan program menggunakan perintah ldd.


Linux
  1. Cara Menggunakan Perintah Temukan dan Temukan Di Linux:Panduan Pemula

  2. Cara Menyimpan Perintah Linux Dan Menggunakannya Sesuai Permintaan

  3. Cara Menginstal dan Menggunakan Glance untuk Memantau Sistem Linux

  1. Cara Menggunakan Perintah Pbcopy Dan Pbpaste Di Linux

  2. Cara Menginstal dan Menggunakan Git di Sistem Linux

  3. Cara Memasang dan Menggunakan TeamViewer di Linux [Panduan Lengkap]

  1. Cara Menggunakan Perintah Strace Linux

  2. Cara Menginstal dan Menggunakan Perintah Ack di Sistem Linux

  3. Bagaimana cara menghasilkan dan menggunakan kunci SSH di sistem Linux?