2015-12-19 12 views
9

Wiem, że opcja -s powinna wyświetlać dłuższe argumenty, ale nie zawsze działa (prawdopodobnie z powodu tych nawiasów klamrowych lub argumentów zagnieżdżonych?).Pokaż pełne argumenty w strace, nawet w nawiasach klamrowych

Nawet po uruchomieniu strace -s1000 my_command ten argument jest ciągle obcinany:

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

Jak mogę zobaczyć pełne argumenty?

Odpowiedz

12

Nie ma takiej opcji w parametrach strace. Jednakże, ze względu na charakter opensource tej wielkiej użyteczności, można wyłączyć skrót całkowicie przez łatanie nagłówek defs.h w stracesources:

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

mam poprawione tamtędy strace-4.9 z mojego lokalnego gentoo/usr/portage/przechowywanie źródeł distfiles/oprogramowania. Nie wymaga pobierania najnowszych źródeł strace z sourceforge.

+0

Argument '-v' działa od wersji 4.15 i wydaje się, że był tam od czasu utworzenia repozytorium Git. – aitap

+0

Zastanawiam się, dlaczego nie zostało to odnotowane w tamtych czasach. Ta opcja powinna rzeczywiście działać. Być może nie zostało to odnotowane ze względu na samo rejestrowanie strace, sądząc po kodzie, używane jest trochę bitfielda i makroses, które sprawdzają obecność niektórych bitów; więc było to o wiele prostsze, aby całkowicie wyczyścić tę kontrolę. –

5

Aby Szerzej opisuje to, co powiedział Vladimir Kunschikov - uruchom następujące polecenia:

  1. git clone git://git.code.sf.net/p/strace/code strace-code
  2. cd strace-code
  3. Modyfikacja część defs.h pliku w sposób opisany przez Władimira Kunschikov.
  4. ./bootstrap
  5. ./configure
  6. make
  7. make install

Zmodyfikowana wersja strace powinny zostać zainstalowane w /usr/local/bin/strace. Teraz uruchom strace używając dużej wartości dla opcji -s. Przykład:

strace -s 65536 command_to_run_goes_here 

Źródła:

  1. odpowiedź Władimira Kunschikov użytkownika.
  2. https://github.com/strace/strace/issues/2
Powiązane problemy