Strace có thể được sử dụng làm công cụ gỡ lỗi hoặc làm hồ sơ nguyên thủy.
Là trình gỡ lỗi, bạn có thể xem các cuộc gọi hệ thống đã được gọi, được thực hiện như thế nào và những gì chúng trả lại. Điều này rất quan trọng, vì nó cho phép bạn thấy không chỉ một chương trình thất bại, mà còn là một chương trình thất bại.Thông thường nó chỉ là một kết quả của mã hóa tệ hại không bắt tất cả các kết quả có thể có của một chương trình. Lần khác, nó chỉ là đường dẫn mã hóa cứng vào tệp. Nếu không có strace bạn có thể đoán những gì đã đi sai ở đâu và như thế nào. Với strace bạn nhận được một phân tích của một syscall, thường chỉ nhìn vào một giá trị trả lại cho bạn biết rất nhiều.
Hồ sơ là một cách sử dụng khác. Bạn có thể sử dụng nó để thực hiện thời gian của từng syscalls riêng lẻ, hoặc như là một tổng hợp. Mặc dù điều này có thể không đủ để khắc phục sự cố của bạn, nhưng ít nhất cũng sẽ thu hẹp danh sách các nghi phạm tiềm năng. Nếu bạn thấy rất nhiều cặp fopen/close trên một tệp, bạn có thể không cần thiết phải mở và đóng tệp mỗi lần thực thi vòng lặp, thay vì mở và đóng nó bên ngoài vòng lặp.
Ltrace là anh em họ của strace, cũng rất hữu ích. Bạn phải học cách phân biệt nơi cổ chai của bạn. Nếu tổng thời gian thực hiện là 8 giây và bạn chỉ mất 0,05 giây cho các cuộc gọi hệ thống, thì việc truy cập chương trình sẽ không làm bạn tốt, vấn đề nằm trong mã của bạn, thường là vấn đề logic hoặc chương trình thực sự cần mất nhiều thời gian để chạy.
Vấn đề lớn nhất với strace/ltrace là đọc đầu ra của chúng. Nếu bạn không biết làm thế nào các cuộc gọi được thực hiện, hoặc ít nhất là tên của syscalls/chức năng, nó sẽ là khó khăn để decypher ý nghĩa. Việc biết những gì các hàm trả về cũng có thể rất có lợi, đặc biệt đối với các mã lỗi khác nhau. Trong khi đó là một nỗi đau để decypher, đôi khi họ thực sự trở lại một viên ngọc của kiến thức; một khi tôi nhìn thấy một tình huống mà tôi chạy ra khỏi inodes, nhưng không ra khỏi không gian miễn phí, do đó tất cả các tiện ích thông thường đã không cho tôi bất kỳ cảnh báo, tôi chỉ không thể làm cho một tập tin mới. Đọc mã lỗi từ đầu ra của strace chỉ cho tôi đi đúng hướng.
strace -p sẽ cho bạn biết những gì đang xảy ra ngay bây giờ với chương trình của bạn ..... nhanh chóng và dễ dàng hơn GDB –
ernesto
Cá nhân tôi tìm thấy 'man strace' thực sự dễ đọc và hữu ích. (P.S. đã không biết về strace trước ngày hôm qua và không phải là chuyên gia Linux) –
"strace là một hệ thống gọi tracer" - nó chỉ cho bạn thấy những gì các chức năng hạt nhân đang được gọi (với các đối số của họ) như là kết quả của chương trình của bạn. – Pithikos