问题
I know the -s
option should display longer arguments, but it doesn't work always (probably because of those curly brackets meaning array or nested arguments?).
Even after running strace -s1000 my_command
this argument is still truncated:
ioctl(3, SNDCTL_TMR_TEMPO or TCGETA, {B9600 -opost -isig -icanon -echo ...}) = 0
How can I see the complete arguments?
回答1:
There is such option in the strace
parameters - you should use -v command line switch.
Furthermore, due to the opensource nature of this great utility, you can disable abbreviation totally by patching the defs.h
header in the strace
sources:
< #define abbrev(tcp) ((tcp)->qual_flg & QUAL_ABBREV)
---
> #define abbrev(tcp) 0
I've patched that way strace-4.9
from my local gentoo /usr/portage/distfiles/ software sources storage. It doesn't require to download latest strace sources from sourceforge.
回答2:
To verbosely describe what Vladimir Kunschikov said - run the following commands:
git clone git://git.code.sf.net/p/strace/code strace-code
cd strace-code
- Modify the part of defs.h file as described by Vladimir Kunschikov.
./bootstrap
./configure
make
make install
The modified version of strace
should have been installed in /usr/local/bin/strace
. Now, run the strace
using a large value for the -s
option. Example:
strace -s 65536 command_to_run_goes_here
Sources:
- Vladimir Kunschikov's answer.
- https://github.com/strace/strace/issues/2
回答3:
According to the manual and the source, the -v
option should help you with large structures.
回答4:
Here it is not length problem.
./term.c: tprintf(" %sopost %sisig %sicanon %secho ...}",
You can add here more flags if you want. The flags are defined in /usr/include/asm-generic/termbits.h
来源:https://stackoverflow.com/questions/34365928/show-complete-arguments-in-strace-even-in-curly-brackets