2015-12-19 16 views
9

Tôi biết tùy chọn -s sẽ hiển thị đối số dài hơn, nhưng nó không hoạt động luôn (có thể do các dấu ngoặc nhọn đó có nghĩa là mảng hoặc đối số lồng nhau?).Hiển thị đối số hoàn chỉnh trong strace ngay cả trong ngoặc nhọn

Thậm chí sau khi chạy strace -s1000 my_command lập luận này vẫn còn cắt ngắn:

ioctl (3, SNDCTL_TMR_TEMPO hoặc TCGETA, {B9600 -opost -isig -icanon -echo ...}) = 0

Làm cách nào để xem các đối số hoàn chỉnh?

Trả lời

12

Không có tùy chọn như vậy trong thông số strace. Tuy nhiên, do tính chất mã nguồn mở của tiện ích tuyệt vời này, bạn có thể vô hiệu hóa hoàn toàn viết tắt bởi vá defs.h tiêu đề trong stracesources:

< #define abbrev(tcp) ((tcp)->qual_flg & QUAL_ABBREV) 
--- 
> #define abbrev(tcp) 0 

Tôi đã vá như vậy strace-4.9 từ địa phương của tôi gentoo/usr/portage/distfiles/phần mềm lưu trữ nguồn. Nó không yêu cầu tải xuống các nguồn strace mới nhất từ ​​sourceforge.

+0

đối số '-v' hoạt động như 4.15 và dường như đã có từ thời gian tạo của repo Git. – aitap

+0

Tôi tự hỏi tại sao nó không được ghi nhận vào thời điểm đó. Tùy chọn này sẽ hoạt động thực sự. Có thể nó đã không được ghi nhận vì bản thân đăng nhập strace, đánh giá bằng mã đang được sử dụng một số bitfield và macro, được kiểm tra sự hiện diện của một số bit; vì vậy nó là một cách đơn giản để xóa hoàn toàn kiểm tra này. –

5

Để verbosely mô tả những gì Vladimir Kunschikov nói - chạy các lệnh sau:

  1. git clone git://git.code.sf.net/p/strace/code strace-code
  2. cd strace-code
  3. Sửa đổi một phần của tập tin defs.h như mô tả của Vladimir Kunschikov.
  4. ./bootstrap
  5. ./configure
  6. make
  7. make install

Các phiên bản sửa đổi của strace nên đã được cài đặt trong /usr/local/bin/strace. Bây giờ, hãy chạy strace bằng cách sử dụng một giá trị lớn cho tùy chọn -s. Ví dụ:

strace -s 65536 command_to_run_goes_here 

Nguồn:

  1. Vladimir Kunschikov của câu trả lời.
  2. https://github.com/strace/strace/issues/2
Các vấn đề liên quan