Lệnh trace và cách sử dụng lệnh trace trong Linux

21
0

Lệnh trace và cách sử dụng lệnh trace trong Linux
Ảnh minh hoạ

Lệnh trace là một công cụ quan trọng trên Linux để theo dõi và phân tích các hoạt động của hệ thống, bao gồm các tác vụ liên quan đến CPU, bộ nhớ, I/O, mạng và các hoạt động hệ thống khác. Có nhiều lệnh trace khác nhau được sử dụng trên Linux, nhưng phổ biến nhất là lệnh strace và lệnh ltrace.

1. Lệnh strace

image 103

Lệnh strace được sử dụng để giám sát các hệ thống cuộc gọi (system calls) và tương tác của các tiến trình với hệ thống tệp và các tài nguyên khác. Strace giúp phát hiện các lỗi hệ thống, đánh giá hiệu suất và debug các lỗi trong ứng dụng.

Cú pháp của lệnh strace như sau:

strace [options] [command]

Trong đó, [options] là các tùy chọn để tùy chỉnh hiển thị thông tin và [command] là câu lệnh cần trace. Nếu không có [command] thì strace sẽ trace toàn bộ các hoạt động hệ thống.

Các tùy chọn (option) phổ biến của lệnh strace

  • -p: Trace một tiến trình có sẵn với PID chỉ định.

Ví dụ: strace -p 1234.

  • -e: Lọc các cuộc gọi hệ thống theo danh sách chỉ định

Ví dụ: strace -e open,read,write ls /tmp.

  • -o: Ghi đầu ra của lệnh trace vào tệp tin hoặc socket.

Ví dụ: strace -o output.txt ls /tmp.

  • -t: In thời gian cho mỗi cuộc gọi hệ thống

Ví dụ: strace -t ls /tmp.

  • -c: In thống kê về số lần xuất hiện của mỗi cuộc gọi hệ thống.

Ví dụ: strace -c ls /tmp.

Ví dụ sử dụng lệnh strace với các tùy chọn

  • Trace tiến trình có PID là 1234: strace -p 1234.
  • Trace toàn bộ hoạt động hệ thống của lệnh ls /tmp: strace ls /tmp.
  • Lọc các cuộc gọi hệ thống chỉ in ra các hàm open, read, và write: strace -e open,read,write ls /tmp.
  • Ghi đầu ra của lệnh trace vào tệp tin output.txt: strace -o output.txt ls /tmp.
  • In thời gian cho mỗi cuộc gọi hệ thống: strace -t ls /tmp.
  • In thống kê về số lần xuất hiện của mỗi cuộc gọi hệ thống: strace -c ls /tmp.

Lệnh strace có nhiều tùy chọn khác để tùy chỉnh việc trace các hoạt động của hệ thống. Ta có thể xem chi tiết hơn về các tùy chọn này bằng cách xem tài liệu hướng dẫn (man pages) của lệnh strace bằng cách gõ lệnh vào terminal lệnh:

man strace

2. Lệnh ltrace

image 102

Lệnh ltrace được sử dụng để giám sát các cuộc gọi hàm thư viện và các lời gọi hệ thống của các tiến trình. Ltrace giúp phát hiện các lỗi trong các thư viện và hỗ trợ cho việc debug các lỗi trong các ứng dụng.

Cú pháp của lệnh ltrace như sau:

ltrace [options] [command]

Trong đó, [options] là các tùy chọn để tùy chỉnh hiển thị thông tin và [command] là câu lệnh cần trace. Nếu không có [command] thì ltrace sẽ trace toàn bộ các cuộc gọi hàm thư viện.

Các tùy chọn (option) phổ biến của lệnh ltrace

  • -p: Trace một tiến trình có sẵn với PID chỉ định.

Ví dụ: ltrace -p 1234.

  • -e: Lọc các hàm thư viện theo danh sách chỉ định.

Ví dụ: ltrace -e malloc,free ls /tmp.

  • -o: Ghi đầu ra của lệnh trace vào tệp tin hoặc socket.

Ví dụ: ltrace -o output.txt ls /tmp.

  • -t: In thời gian cho mỗi hàm thư viện được gọi.

Ví dụ: ltrace -t ls /tmp.

  • -c: In thống kê về số lần xuất hiện của mỗi hàm thư viện được gọi.

Ví dụ: ltrace -c ls /tmp.

Ví dụ sử dụng lệnh ltrace với các tùy chọn

  • Trace tiến trình có PID là 1234: ltrace -p 1234.
  • Trace toàn bộ các hàm thư viện được sử dụng bởi lệnh ls /tmp: ltrace ls /tmp.
  • Lọc các hàm thư viện chỉ in ra các hàm mallocfree: ltrace -e malloc,free ls /tmp.
  • Ghi đầu ra của lệnh trace vào tệp tin output.txt: ltrace -o output.txt ls /tmp.
  • In thời gian cho mỗi hàm thư viện được gọi: ltrace -t ls /tmp.
  • In thống kê về số lần xuất hiện của mỗi hàm thư viện được gọi: ltrace -c ls /tmp.

Lệnh ltrace cũng có nhiều tùy chọn khác để tùy chỉnh việc trace các hàm thư viện được sử dụng bởi chương trình. Ta có thể xem chi tiết hơn về các tùy chọn này bằng cách xem tài liệu hướng dẫn của lệnh ltrace bằng cách nhập lệnh sau vào terminal:

man ltrace

Lệnh này sẽ hiển thị trang tài liệu hướng dẫn cho ltrace, cung cấp cho người dùng một hướng dẫn chi tiết về cách sử dụng lệnh ltrace và các tùy chọn được hỗ trợ.

Ngoài ra, để sử dụng hiệu quả lệnh ltrace, ta cần có kiến thức về các hàm thư viện và cách chương trình sử dụng chúng. Nếu ta không biết chính xác chương trình sử dụng các hàm thư viện nào, thì ltrace sẽ không hữu ích trong việc giúp ta tìm ra các lỗi của chương trình.

Trong quá trình sử dụng lệnh ltrace, ta cần xem xét cẩn thận các kết quả được trả về, vì chúng có thể cho thấy các lỗi trong chương trình, cũng như các hành động không mong muốn của chương trình.

Tóm lại, ltrace là một công cụ hữu ích để trace các hàm thư viện được sử dụng bởi chương trình. Tuy nhiên, việc sử dụng lệnh ltrace cần có kiến thức về các hàm thư viện và cách chương trình sử dụng chúng, và ta cần xem xét cẩn thận kết quả được trả về để tìm ra các lỗi trong chương trình.

Đỗ Trung Quân
WRITTEN BY

Đỗ Trung Quân

Nguồn nội dung này đến từ Website DoTrungQuan.info

Trả lời