Khi sử dụng lệnh strace
với cờ -T
, tôi muốn biết đơn vị thời gian được sử dụng để hiển thị thời gian trong các tòa nhà là gì? Tôi cho rằng nó sẽ được tính bằng giây, nhưng tôi không chắc lắm và dường như nó được bỏ qua trong hướng dẫn.
Khi sử dụng lệnh strace
với cờ -T
, tôi muốn biết đơn vị thời gian được sử dụng để hiển thị thời gian trong các tòa nhà là gì? Tôi cho rằng nó sẽ được tính bằng giây, nhưng tôi không chắc lắm và dường như nó được bỏ qua trong hướng dẫn.
Câu trả lời:
Từ mã nguồn :
if (Tflag) {
ts_sub(ts, ts, &tcp->etime);
tprintf(" <%ld.%06ld>",
(long) ts->tv_sec, (long) ts->tv_nsec / 1000);
}
Điều này có nghĩa là thời gian được hiển thị bằng giây, với micro giây (được tính từ giá trị nano giây) sau dấu thập phân.
Nếu bạn chạy lệnh strace
bằng cách sử dụng "cờ -c", nó sẽ hiển thị cho bạn một bảng và thời gian được báo cáo sau vài giây :
strace -c -p 3569 # 3569 is PID
strace: Process 3569 attached
^Cstrace: Process 3569 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
99.73 0.016000 8 1971 poll
0.16 0.000025 0 509 75 futex
0.06 0.000010 0 1985 1966 recvmsg
0.06 0.000009 0 2336 mprotect
0.00 0.000000 0 478 read
0.00 0.000000 0 13 write
0.00 0.000000 0 29 mmap
0.00 0.000000 0 9 munmap
0.00 0.000000 0 18 writev
0.00 0.000000 0 351 madvise
0.00 0.000000 0 1 restart_syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.016044 7700 2041 total
-c
Đếm thời gian, cuộc gọi và lỗi cho mỗi cuộc gọi hệ thống và báo cáo tóm tắt về thoát chương trình. Trên Linux, điều này cố gắng hiển thị thời gian hệ thống (thời gian CPU chạy trong nhân) độc lập với thời gian đồng hồ treo tường. Nếu -c được sử dụng với -f hoặc -F (bên dưới), chỉ giữ tổng số tổng cho tất cả các quy trình được theo dõi.