GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana seharusnya strace digunakan?

Dengan kata sederhana, strace melacak semua panggilan sistem yang dikeluarkan oleh suatu program bersama dengan kode pengembaliannya. Pikirkan hal-hal seperti operasi file/socket dan banyak lagi yang tidak jelas.

Ini sangat berguna jika Anda memiliki sedikit pengetahuan tentang C karena di sini panggilan sistem akan lebih akurat mewakili panggilan perpustakaan C standar.

Misalkan program Anda adalah /usr/local/bin/cough. Cukup gunakan:

strace /usr/local/bin/cough <any required argument for cough here>

atau

strace -o <out_file> /usr/local/bin/cough <any required argument for cough here>

untuk menulis ke 'out_file'.

Semua output strace akan masuk ke stderr (hati-hati, volumenya yang besar sering meminta pengalihan ke file). Dalam kasus yang paling sederhana, program Anda akan dibatalkan dengan kesalahan dan Anda akan dapat melihat di mana interaksi terakhirnya dengan OS dalam keluaran strace.

Informasi lebih lanjut harus tersedia dengan:

man strace

Ikhtisar Strace
strace dapat dilihat sebagai debugger yang ringan. Ini memungkinkan programmer / pengguna untuk mengetahui dengan cepat bagaimana suatu program berinteraksi dengan OS. Ini dilakukan dengan memantau panggilan dan sinyal sistem.

Penggunaan
Baik untuk saat Anda tidak memiliki kode sumber atau tidak ingin direpotkan untuk benar-benar melewatinya.
Juga, berguna untuk kode Anda sendiri jika Anda tidak ingin membuka GDB, tetapi hanya tertarik untuk memahami interaksi eksternal.

Pengantar kecil yang bagus
Berikut adalah pengenalan lembut untuk menggunakan strace untuk men-debug proses hang:pengenalan strace


Linux
  1. Cara Mengganti Perangkat Btrfs yang Gagal

  2. Ubuntu:cara membagikan port 53 yang digunakan oleh systemd-resolved

  3. bagaimana saya bisa mencegat panggilan sys linux?

  1. Bagaimana cara mengkompilasi file .c dengan menyertakan OpenSSL?

  2. Bagaimana cara melacak operasi IO per file di Linux?

  3. Bagaimana fungsi eval dapat digunakan di makefile?

  1. Memahami panggilan sistem di Linux dengan strace

  2. Haruskah invoke-rc.d atau service digunakan untuk me-restart layanan?

  3. Bagaimana menemukan jalur direktori parsial?